を返すためのエレガントな方法は何ですか:少なくとも場合私はメソッドを持っているすべてのメソッドを実行し、組み合わせてブール結果
function SomeClass.DoSomethingManyTimesForDifferentParams: Boolean;
begin
DoSomething('one');
DoSomething('two');
DoSomething('three');
end;
:
function SomeClass.DoSomething(param: String): Boolean;
は、この方法は、1つの方法で、例えば、頻繁に使用されているとしましょう1つのDoSomething
メソッドはFalse
を返します。メソッド全体の結果はFalse
でなければなりませんが、すべてのメソッド呼び出しで作業を行う必要があります。ただ醜いです
function SomeClass.DoSomethingManyTimesForDifferentParams: Boolean;
var
r1, r2, r3: Boolean;
begin
r1 := DoSomething('one');
r2 := DoSomething('two');
r3 := DoSomething('three');
Result := r1 and r2 and r3;
end;
:
は今、私はこれを持っています。DoSomething
呼び出しをインライン化できません。最初のメソッドが返された場合は、
False
の残りのメソッドはどれも最適化のために呼び出されません。私は思いつくことができないシンプルでエレガントな方法を欠いていると思う。
既存のソリューションは問題ありませんが、変更しないでください理由を説明するコメントを追加します。しかし、副作用のある機能は危険です。おそらく、あなたはより基本的なレベルでデザインを再考する必要があります。あなたがこれを全く必要としているという事実は、より深刻な問題を示しています。 –
はい、そうです。これは私が今保守している古いコードのいくつかの問題を示す例に過ぎません。残念ながら再設計はコストがかかりませんので、そのままゲームをしなければなりません。 – Vix
だから、それを書いてコメントをつけて移動してください。レガシーコードの優雅さに心配しているのは不思議です。あなたが実際にエレガンスを課すためにそれを変更することができない場合は、あなたの懸念は何ですか? –