さまざまなプロジェクトでこの問題に何度か遭遇しましたが、通常使用するよりも優れた解決策があるかどうか疑問に思っていました。
実行する必要がある一連のメソッドがあり、メソッドのいずれかで何か問題が発生したかどうかを知りたいとします。これは、正常に発生する可能性があります (以前の変更を元に戻す可能性があります...)。私は通常、次のことを行います (疑似C# は、私が最もよく知っているためです):
private bool SomeMethod()
{
bool success = true;
string errorMessage = null;
success = TestPartA(ref errorMessage);
if (success)
{
success = TestPartB(ref errorMessage);
}
if (success)
{
success = TestPartC(ref errorMessage);
}
if (success)
{
success = TestPartD(ref errorMessage);
}
//... some further tests: display the error message somehow, then:
return success;
}
private bool TestPartA(ref string errorMessage)
{
// Do some testing...
if (somethingBadHappens)
{
errorMessage = "The error that happens";
return false;
}
return true;
}
この種のことに対処するためのより良い方法論があるかどうか疑問に思いました (これが私の質問です)。if
私は、より洗練されたものであるべきだと思われるものについて、多くのステートメントを書くことになっているようです.
デリゲート関数のセットをループすることを提案されましたが、それを行うためのクリーンな方法がない限り、ソリューションを過剰に設計するのではないかと心配しています。