晴れときどき晴れ

プログラミングと日常についてマイペースにあげます

まとめ(プログラマが知るべき97のこと)

関数型プログラミングを学ぶことの重要性

by Edward Garson

なぜ?

自分の書くコードの品質を大きく高められる。具体的には参照透過性が高くなる。
それによって、ドメインモデル開発において好結果につながりやすい。

参照透過性(wikipedia)

  1. 同じ条件を与えれば必ず同じ結果が得られる
  2. 他のいかなる機能の結果にも影響を与えない
#参照透過性が守られている場合
def f(x):
    return 2 * x

f(1) #=> 2

#守られていない場合(変数eが外部の値と関数の中で異なる。)
e = 1
def f(x):
    global e = 2
    return e + x

f(1) #=> 3
#これより下でeを使っていると、結果が変わってしまったりする
#副作用を伴う機能の例としては、I/O制御(write/print等)、上記addのように破壊的代入を行う機能など

ドメインモデル開発(ドメイン駆動開発)

複雑なドメインの設計はモデルベースで行うべきであり、また大半のソフトウェアプロジェクトではシステムを実装するための特定の技術ではなくドメインそのものとドメインのロジックに焦点を置くべきとする

だから何?

関数型プログラミング言語をひとつ習得しよう(^^)