Implementation Patterns勉強会第2回

今回は5章Classの途中まで。
ネーミングのことが出てきた。ネーミングは重要だ。
ネーミングに1週間もかけることはないが、30分ぐらいかけてしまうことはある。
変数名にflag1,flag2とか出てきてコメントすらなかったりすると作者に対して殺意を覚える。
で、良いネーミングにはペアプロが有効ではないかという話をした。
1人だと独りよがりの名前になることがあるが、少なくともペアで同意すればそれほどずれた名前にはならないだろう。


Classの章なので当然、superclass,subclassの話も出てきた。
参加者の中で、新人教育時に講師から「継承は使うな」と言われたという人がいた。
それもまた極端な話だが講師の気持ちも分からないではない。
継承を使っていわゆる”差分プログラミング”をすれば”作る際”の生産性は確かに向上するだろう。
しかし、保守の時にはまる。superclassで実装したメソッドをsubclassでオーバーライドしていたりしたら最悪。
初心者は後々のことまで考えてプログラミングすることなんてないだろうから”継承禁止”というのも一理ある。
継承していいのは抽象クラスぐらいだな。
普通のクラスをどうしても継承したい場合は、"is a"の関係になるか、リスコフの置換原則にあてはまるかといったことを確認した上で慎重に行った方がいい。