Rubyスタイルガイドを読む: クラスとモジュール(2)クラス設計・アクセサ・ダックタイピングなど

こんにちは、hachi8833です。Rubyスタイルガイドを読むシリーズ、今回の「クラスとモジュール編」の2回目に予定していた部分がかなりこってりしているので、3回に分けることにしました。よろしくお願いします。 今回取り上げるスタイルの多くは、設計で「不要なクラスを作らない」「不要な継承を作らない」ことに注目していますね。 Rubyスタイルガイドを読む: 総もくじ 前回: Rubyスタイルガイドを読む: クラスとモジュール(1)構造 次回: Rubyスタイルガイドを読む: クラスとモジュール(3)クラスメソッド、スコープ、エイリアスなど クラスとモジュール(2)クラス設計・アクセサ・ダックタイピングなど 参照: bbatsov/ruby-style-guide 5-06【統一】クラス設計の階層はLiskovの置換原則に従う When designing class hierarchies make sure that they conform to the Liskov Substitution Principle. Liskovの置換原則に言及しています。 型のオブジェクト に関して真となる属性を とする。このとき が の派生型であれば、 型のオブジェクト について が真となる。 すなわち、リスコフとウィングが定式化した派生型の定義は置換可能性 (substitutability ) に基づいている。 が の派生型であれば、プログラム内で 型のオブジェクトが使われている箇所は全て 型のオブジェクトで置換可能であり、それによってプログラムの妥当性が損なわれることは無い。 Wikipedia: リスコフの置換原則より どう落とし込むか考えてしまいましたが、morimorihogeさんが「派生クラスはスーパークラスが持つインターフェース(メソッド)を受信可能でなければならない」とまとめてくれました。 参考: [オブジェクト指向設計原則]リスコフの置換原則(LSP)Add Star 参考: オブジェクト思考 – リスコフの置換原則 … Continue reading Rubyスタイルガイドを読む: クラスとモジュール(2)クラス設計・アクセサ・ダックタイピングなど