デメテルの法則
Law of Demeter, LoD
内部のデータを取得して計算するんじゃなくて、そもそも計算した結果を取ろうねみたいな
code:before.java
final String outputDir = ctxt.getOptions ().getScratchDir().getAbsolutePath(); // ネストして取得
...
// ↓呼び出し側で↑を使って計算
String outfile = outputDir + "/" + className.replace ('.', '/') + ".class";
FileOutputStream fout = new FileOutputStream(outFile);
BufferedOutputStream bos = new Buffered0utputStream(fout);
code:after.java
BufferedOutputStream bos = ctxt.createScratchFileStream (classFileName);
オブジェクト間のやりとりを最小限に抑え、必要であれば直接やりとりをする
正直何が問題なのかまったくわかっていない...mrsekut.icon
なにか?
オブジェクトA, B, Cに対し
AがBのメソッドなどを呼ぶのはOK
AがBのメソッドを経由してCのメソッドを呼ぶのがNG
というもの
何が問題?
Aが、Bに対して、Bの内部構造以上のことを知識を要求するから
で、何が問題?
テストがしづらい?
使えるドットは一つだけ
a.b.Method()はだめ、a.Method()はok
メソッドチェーンを許容しない
関連
参考