
純粋 vs 副作用 〜 PHPはなぜ難しいのか?
DRANK
純粋関数(pure function)という言葉を聞いたことはありますか? 簡単にいうと、同じ引数を渡せば必ず同じ結果を返す関数のことで、「数学的な関数」と説明されることもあります。 同じ引数で同じ結果ということは『確実な再現性がある』ということで、「純粋」の概念を知って純粋と不純な処理を切り分けられれば、コードを見通しよく、テストしやすいコードにすることもできます。 いくつかの静的解析ツールとIDEは純粋性について分析を提供しており、意味のない純粋関数の呼び出しについて警告を与えてくれます。 これと関連して、PHP 8.5向けには `#[NoDiscard]` というattributeも追加され、戻り値を処理する必要がある実装をマークすることもできます。 では、既存実装をPureあるいはNoDiscardに明解に分類できるかというと… 現実には一筋縄にはいかない、さまざまな考慮事項があります。 本トークでは「純粋」および「副作用」という概念、そしてそれらをとりまく周辺事情についてお話しします。
1 comments
#phpcon でtadsanと握手! fortee.jp/phpcon-2025/pr…