memorandums

日々のメモです。

オブジェクト指向エクササイズ(ThoughtWorksアンソロジー第5章)

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

数日前から読んでいる書籍で、優れたオブジェクト指向設計の原理を自分のものにして、実際に使えるようにするためのエクササイズとして9つのルールがありました。メモのために転記させていただきます。タイトルだけでは真意のほどがわからないところもあるかもしれません。その場合は書籍を手に取ってください。

1.1つのメソッドにつきインデントは1段階までとすること
2.else句を使用しないこと
3.すべてのプリミティブ型と文字列型をラップすること
4.1行につきドットは1つまでとすること
5.名前を省略しないこと
6.すべてのエンティティを小さくすること
7.1つのクラスにつきインスタンス変数は2つまでにすること
8.ファーストクラスコレクションを使用すること
9.Getter、Setter、プロパティを使用しないこと

学生さんの中には9項なんかは最初アレと思った人が多いのではないでしょうか?

クラス定義といえばGetter,Setter,フィールドですからね。。。

これは“Tell, Don’t Ask” という原則にもとづいているようです。

要は、オブジェクト間でGetterやSetterなどを介して値を直接やりとりするということは、仕事(責務)の分担がしっかりなされていない証拠であり、オブジェクト指向設計の基本に反していることになる、ということだと思います。

ただ、この章の著者も書いていますが、このルールはあくまでトレーニングだということです。

ルールを破りそうになったときに、それが必要なのかどうかを考えることに意義があるということらしいです。

なるほどなぁ〜と。

この基準を自動計測できるようなプログラム品質測定ツールでも作ってみましょうかね?もうありそうですけど。。。