Effective Java 第4章 クラスとインタフェース (15, 16)

長めの項目を2つほど。

項目15

値だったりクラスだったり、できるだけ変更されないないようにしましょう、という項目。
できるだけfinalなクラスとフィールドにするとか、値を返すときもディープコピーするなど。


……最初から関数型の言語使えばいいんじゃないかなあ?ライブラリの充実度合い、とかスキルが関係してくると難しいけれど。
Javaの資産が使えて関数型も入ってる、っていうのならScalaがぴったりなんだけどなー。ClojureLispに慣れてないので書きにくいし。

項目16

継承はやめてコンポジションしましょう、という項目。
多分この項目は継承でも正しい場合でもコンポジション使いましょうってことかな。継承より委譲。


継承があまり良くなくて、コンポジション(コンポジット?)がいいってのは前に散々調べたのでだいたい分かっている……つもり。
クラスAから派生するクラスを作るときに、そのクラスはクラスAである、ってことが言えないなら委譲にするんだったかな。


いろいろな項目を守ってプログラムを書くとよくなるんだろうけど、それ故にいろいろ縛られるから書いてる時は楽しさ1割減かも。