■まずオブジェクト指向の設計思考
- 1つのクラスにデータと、そのデータを利用するロジックはまとめる
- オブジェクトの役割を単純にする
- 複雑な処理は、オブジェクトを組み合わせて実現する。RISC的な感じ?
■完全コンストラクタパターンとは
とにかくSetterは用意しない。使用するデータを渡すのはコンストラクタのみ。
こうすることによって生きているインスタンスに想定外の値がセットされるのを
完全に防止する。
例)言語適当ですイメージイメージw
class Calc {
var value1, value2;
// 唯一のデータセット
constructor(value1, value2) {
this.value1 = value1;
this.value2 = value2;
}
// 処理(Getter)
function add() {
return this.value1 + this.value2;
}
}
- 設計時、渡すデータを使用していないロジックは不要なはずなので
このクラスに必要な関数か否か設計時に確認できる。
また渡すデータが多すぎる場合は、クラスに機能をもたせ過ぎてる
可能性があるので、クラスの分離を検討できる。
渡すデータを必ず使用することを設計原則として考えると
かなり疎結合なクラスを設計できると思う。
- デバッグ時、渡したデータが変わることはないので変化を追っかける必要がない。
ましてやどいつが値をセットしたのか犯人探しでイライラすることもない。
- 必要な値を用意してから処理を実行するので可読性もあがる。
どこで値セットしたか判らないことはなくなる。
テストコードも書きやすい。
■参考URL
かなり前に見た記事だけどまだあって嬉しい。
0 件のコメント :
コメントを投稿