わかりました、このメソッドの混乱をどのように修正できるかについて意見が欲しいです!
多くのネストされた「if」ステートメントへの方法があります。
しかし、メソッドがどこで失敗したかを正確に知る必要があることに注意してください。現在、それぞれの「else」句のそれぞれで、エラー (失敗した「if」条件) をログに記録しています。
注:物事の背後にあるロジックは無視してください。すべての関数名などを作成したので、スタイルと構造に注目してください.
スケルトン構造は次のとおりです。
public void MyMethod()
{
try
{
bool tryAgain = false;
string filename = DownloadFile();
if( IsFileFormatOk(filename) )
{
blah = GetBlah(filename);
if(blah.ID > 0)
{
if(ImportFile(filename)
{
string username = GetUserFromFile(filename);
if(isValidUser(username))
{
// few more levels to go
//
//
//
}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}
}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}
}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}
}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}
}
catch
{
}
finally
{
if(tryAgain)
{
// blah
}
}
}