ネタもと:http://blogs.wankuma.com/ma2/archive/2008/06/05/141570.aspx?Pending=true
コメント連投気味だったので記事で書きます。
まずはネタもとのソースコードをもとにC#版の実装を書きます。
bool bReturn = false;
do {
if(!Condition1)
throw new SomeException("Some Error1");
if(!Condition2)
throw new SomeException("Some Error2");
//実行する処理
PrimarilyProcess();
bReturn = true;
} while(false);
return bReturn;
ざっとこんな感じだったかと思いますが、結論として私はこの構文を多用します。
理由としては、
- サブメソッドに抽出するまでもない処理を独立的に記述できる。
- returnしたければ好きにできる。サブメソッドの結果を見る必要がない。
- 異常系の処理を先に書ける。
といったものがあります。
特に、異常系がが先だと一見可読性が落ちますが、出力視点からの処理の流れや堅牢性を考えると堅実な選択であると私は思います。