VSS で管理しているのにソースの修正部分の差分をコメントとして残す(じゃんぬねっと日誌)を見て思い出したことがあります。
関数の中にreturnを複数書いてはいけない、というルールはよく見かけます。
拒絶反応を起こす人もよく見ます。自分もそうです。
インデントが深くなるのは見辛くて駄目だ。こんなのナシだ!! とルールに立ち向かう人がいました。
ここではレジスタンスと呼ぶことにします。
レジスタンスもたくさんいるわけですが、その中でも感動した方法は次のものです。
BOOL func( void )
{
BOOL bRet = FALSE;
while( 1 ){
if( !test1() ){
break;
}
if( !test2() ){
break;
}
if( !test3() ){
break;
}
if( !test4() ){
break;
}
if( !test5() ){
break;
}
testOKfunc(); // 条件を満たせばできる処理
bRet = TRUE;
break;
}
return bRet;
}
ガード句を使いながら、returnはひとつだけです。
このような書き方を "カラwhile" と呼んでいました。whileの最後でbreakする(=ループしない)からだと思います。
もちろん別の戦地ではこんな言葉通じません。
この方法が良いか悪いかの判断ができなかったのと、returnの代わりにbreakを書く習慣がなかった(書き忘れると怖い)ので自分は使いませんでしたが。
# やっと抱負に挙げた方面のネタが書けました