私が働いている会社には、Java で従うべきグッド プラクティスを説明したドキュメントがあります。this
そのうちの 1 つは、次のようにを返すメソッドを避けることです。
class Properties {
public Properties add(String k, String v) {
//store (k,v) somewhere
return this;
}
}
私はそのようなクラスを持っているので、私は書くことができます:
properties.add("name", "john").add("role","swd"). ...
私はそのようなイディオムを何度も見てきましStringBuilder
た。
彼らの議論は次のとおりです。
...同期の問題や、ターゲット オブジェクトの状態に関する期待の失敗の原因となる可能性があります。
これが当てはまる状況は考えられません。誰か例を挙げていただけますか?
編集ドキュメントは可変性について何も指定していないため、呼び出しの連鎖と実行の違いはわかりません。
properties.add("name", "john");
properties.add("role", "swd");
発案者と連絡を取ろうとしますが、銃を装填したままやりたかったので、質問を投稿しました.
解決済み: 作成者の 1 人と話をすることができました。彼の当初の意図は、Builder パターンのように、まだ準備ができていないオブジェクトを解放することを避けることだったようで、呼び出し間でコンテキストの切り替えが発生した場合、オブジェクトは無効な状態。this
メソッドを 1 つずつ呼び出すと同じ間違いを犯す可能性があり、ビルド プロセスを適切に同期させることと関係があるため、これは復帰とは関係ないと主張しました。彼は、文書がより明確になる可能性があることを認め、すぐに改訂する予定です。勝利は私の/私たちのものです!