# 純粋関数
関数はなるべく純粋にしましょう。以下の条件を満たす関数を純粋関数と呼びます。
- 参照透過
- 同じ入力に対して同じ出力を返す
- 副作用を持たない
- 外部に影響を与えない
たとえばグローバル変数、現在時刻、乱数などに依存する関数は参照透過ではありません。また、グローバル変数の更新、DBへの挿入、HTTPリクエスト、ファイルへの書き込みなどを行う関数は副作用を持ちます。
純粋関数には以下のメリットがあります。
- 外部の状態を考慮せずに済むので理解しやすい
- 入出力のみで動作を検証できるのでテストしやすい
- パフォーマンスを上げやすい
- 同じ入力に対して計算せずに出力を返すメモ化が可能になる
- 外部と分離されているので並列化しやすい
使用する値をすべて引数で渡すと純粋関数にできます。
NOTE
関数はなるべく純粋にする
# 注意
純粋関数のみで構築できるソフトウェアは限られています。純粋関数の割合を増やし、非純粋な部分を分離することが重要です。