2009年09月27日
if文の入れ子が嫌い
private void method()
{
if(A == true)
{
if(B == true)
{
if(C == true)
{
if(D == true)
{
処理;
}
}
}
}
}
みたいなコーディングに出くわしたことがあります。
ものすごい数のif文が入れ子になってるんです。
処理がすごい長くてスクロールしないと最後まで
プログラムが読めず、この括弧 }のスタートはどこの括弧{ だ?
となる時もあります。
さて、コーディングした人が「ある意図を持って」このように書いたのならば
まぁ理解できます。
例えば、
実はもともと各if文には処理がいろいろ書かれていて、仕様変更で処理が不要に
なり今の形になってて、本当は
if(A == true && B == true && C == true && D == true)
{
処理;
}
みたいに書きたいところを
今後も仕様変更が頻繁に行われて条件や処理が増えたり減ったり、
する可能性があるので形としてこのままにしといた。
とか。
わたくし、短気なのでぱっと見、「なんじゃこりゃ~~!!」ってキレて、
よくよくそういう事考えて「・・・ならしょうがないか・・・」って熱が冷めること多々。
わたくしならこの場合
private void method()
{
if(A == false){return;}
if(B == false){return;}
if(C == false){return;}
if(D == false){return;}
処理;
}
です。
処理しない条件を頭でカットすると、入れ子にならないから見やすいと思うんです。
あと、条件が変更になれば削除とか追加がしやすいとも思う。
ただ実は人にどうこう言えるほど自信はないのです。
そこがへなちょこSEたる所以。
{
if(A == true)
{
if(B == true)
{
if(C == true)
{
if(D == true)
{
処理;
}
}
}
}
}
みたいなコーディングに出くわしたことがあります。
ものすごい数のif文が入れ子になってるんです。
処理がすごい長くてスクロールしないと最後まで
プログラムが読めず、この括弧 }のスタートはどこの括弧{ だ?
となる時もあります。
余談
こんな時は「{」もしくは「}」のところにカーソルを置いて、
「ctrl」+「}」を押すと、対応する括弧のところに飛んでいってくれます。
(Visual Studioの話。)
さて、コーディングした人が「ある意図を持って」このように書いたのならば
まぁ理解できます。
例えば、
実はもともと各if文には処理がいろいろ書かれていて、仕様変更で処理が不要に
なり今の形になってて、本当は
if(A == true && B == true && C == true && D == true)
{
処理;
}
みたいに書きたいところを
今後も仕様変更が頻繁に行われて条件や処理が増えたり減ったり、
する可能性があるので形としてこのままにしといた。
とか。
わたくし、短気なのでぱっと見、「なんじゃこりゃ~~!!」ってキレて、
よくよくそういう事考えて「・・・ならしょうがないか・・・」って熱が冷めること多々。
わたくしならこの場合
private void method()
{
if(A == false){return;}
if(B == false){return;}
if(C == false){return;}
if(D == false){return;}
処理;
}
です。
処理しない条件を頭でカットすると、入れ子にならないから見やすいと思うんです。
あと、条件が変更になれば削除とか追加がしやすいとも思う。
ただ実は人にどうこう言えるほど自信はないのです。
そこがへなちょこSEたる所以。