メソッドコール、たとえばClassA.search(a、b、flag)が3つのコントローラで使用されているこのコードが発生しました。これはメソッドの簡略化されたバージョンです。これはメソッドを再利用/共有する良い方法ですか?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
コードは再利用されるので、これは良い考えですか?または、コードを再利用できるが、メソッド呼び出し元(クライアント)コードのカスタマイズ(この3つのメソッドを3つの異なるメソッドに分割しても、共通コードのリファクタリングされたメソッドを宣言できるように)にこのフラグを導入しない方が良い方法はありますか?
ローカル変数をフィールドに変換して機能させることができなければ、私はこれに同意します。 –
なぜローカル変数が悪いのですか?パラメータを何度も渡す必要がある状態が非常に重要な場合は、コンストラクタの最終フィールドに初期化された状態でワンタイムオブジェクトを作成し、一度だけ使用します。ステロイドの機能;-)。 –
それは本当ですか?フィールドを持つクラス(およびコンストラクタ?)を追加することは、1つのフラグを避けるための多くの作業です。 ;) –