オブジェクト指向プログラミングを極める

より良いプログラマを目指すブログ

「Getter/Setterを作るな」の本当の意味

オブジェクト指向において「Getter/Setterを作るな」というのは様々な場所で言われていることだが、これが一番難しくて苦労する。Getter/Setterを排除するための対処法として「デメテルの法則」や「Tell, don't ask.」などが世の中のあらゆる場所で紹介され…

privateメソッドは不純物

あるクラスの中で同じ処理が何度も出てくることがある。 このときコードの重複を排除するためにprivateメソッドを使うことを思いつく。 class SomeDevice { // デバイスの温度を取得 public float GetTempareture() { byte[] rawData = input.read(); return…

継承のことは忘れよう

ご存知の通り、オブジェクト指向の三大要素であるはずの継承においてはたくさんの問題点が報告されている(こことか、こことか)。確かに継承よりもコンポジション(委譲、合成)のほうが優れている点が多い。下記はその一例だ。いま、Windows.FormsのButton…

オブジェクト指向が劇的に上達するたった一つのルール「-erで終わるクラスを作るな」

私が出会った、オブジェクト指向エクササイズ*1を凌ぐほどの素晴らしいルール。「-erで終わるクラスを作るな」私はこれを見たとき何言ってんだこいつと思った。私が当たり前のように作ってきた Renderer、Manager、Helper、Controller…などのクラスは間違い…

カプセル化=データの変更制限ではない

カプセル化はオブジェクト指向プログラミングの三大要素*1のひとつでオブジェクト指向プログラミングの入門書の最初に出てくる言葉だ。そして、カプセル化の説明としてよく使われるのが「データを封じ込めメソッドを介してのみ変更可能とすることでデータの…