関数型言語
Last updated
Last updated
オブジェクト指向と関数型プログラミングの違い
データと振る舞いをどう扱うか
副作用があるか
関数型にするには
データと振る舞いを分離させる
外部に依存しないよう関数の入出力を定める
再帰やイテレーションメソッドを使い、副作用を取り除く
同じ関数であれば、いつ実行しても結果が同じであること。
引数が同じなら戻り値は、必ず同じであるということです
global変数の使用などによる状態の変化がないこと
ファイルのI/Oやデータベースも状態の変化に含まれてしまいますが、そこは局所化してなるべく切り分けましょう
状態(変数)と振る舞いを切り離す
ループではなくmapやreduceを使う
振る舞いを副作用のない関数にバラす
以下の様な兆候を感じたら、あなたはそのプログラムを関数型プログラミングで書くべきです。
"人工物"クラスが増えてきた。
Builderパターン、Strategyパターン、Commandパターン、Interpreterパターンが増えてきた。
DI注入のとき、コンストラクタ注入にするか、セッター注入にするか、いつも迷う。