オブジェクト指向と関数型プログラミングの違い
関数型にするには
http://qiita.com/stkdev/items/5c021d4e5d54d56b927c
同じ関数であれば、いつ実行しても結果が同じであること。
引数が同じなら戻り値は、必ず同じであるということです
global変数の使用などによる状態の変化がないこと
ファイルのI/Oやデータベースも状態の変化に含まれてしまいますが、そこは局所化してなるべく切り分けましょう
http://pg-kura.hatenablog.com/entry/20111114/1321236695
以下の様な兆候を感じたら、あなたはそのプログラムを関数型プログラミングで書くべきです。
“人工物”クラスが増えてきた。
Builderパターン、Strategyパターン、Commandパターン、Interpreterパターンが増えてきた。
DI注入のとき、コンストラクタ注入にするか、セッター注入にするか、いつも迷う。