Javaによる関数型プログラミング

ということで、いい感じの厚さの本でした。これです。

Javaによる関数型プログラミング ―Java 8ラムダ式とStream

Javaによる関数型プログラミング ―Java 8ラムダ式とStream

状態の変更が可能なコードは、多くの不確定要素を持っています。より多くの者に変更の可能性が存在すると、より多くのコンポーネントが破綻し、より多くのエラーが混入する可能性があります。複数の変数が変更されるようなコードは理解しにくく、並列化も困難です。不変性(immutability)はこれらの問題を根本から断ち切ります。 Javaは不変性をサポートしますが、強制はしません。しかし開発者は不変性を強制できます。開発者はオブジェクトの状態を変更するという長年の習慣を改めなければなりません。可能な限り不変オブジェクトを使用しなければならないのです。 「Effective Java」におけるJoshua Blockの「オブジェクトは不変として扱え」という賢者のアドバイスにしたがって、変数、フィールド、パラメータを宣言する際、なるべくfinal宣言するようにしてください。 オブジェクトを生成する際は、Stringクラスのような不変オブジェクトを優先的に使ってください。コレクションを扱う場合はArrays.asList()やCollectionsクラスのunmodifiableList()メソッドなどを使って、不変性のものか、unmodifiableのコレクションを生成してください。 可変性(muttability)、つまり状態変更が許可されているような性質をもたせるのを避けることで純粋関数を記述できます。純粋関数とは、副作用を持たない関数のことです。 *1

この本は厚すぎないので良いのではないかと思います。 この辺と

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

一緒に読んだりするのもいいのかもしれませんね。たぶん持ってる。記憶がある。

話は違いますが、10.10へOSアップデートする気力がないというか、新しいAir買うまで、10.9のままでいいのではないかと思ってしまっています。 セットアップめんどくさいのでね。いや、それも、どうかね。

*1:--『Javaによる関数型プログラミング』 --p.16-- 1.4.2 不変性を尊重する