MENU閉じる

HEXA BLOG

プログラム

HEXA BLOGプログラム2008.9.30

階層

全国の皆様おはようございます。平尾です。
大阪ではここ1週間で、ぐっと気温が下がりました。
先週水曜日の時点で気温が28/17度(最高気温/最低気温)あったのが、
昨日月曜日では最高気温17/14度という…。
http://weather.yahoo.co.jp/weather/jp/past/27/6200.html
さすがに社員の何名かは少し体調を崩したようで。
皆様も十分にお気を付けください。


本日もプログラマ初心者の方に向けての話です。
学生さんのソースを見ていると、ネストが深くなってしまっているのをよく見かけます。

void proc(void)
{
if( ... && ... ) {
if( ... ) {
if( ... ) {
for(;;) {
}
}
}
}
}

処理的にきっちり動いていても、
担当が交代になったときに見直すときや、
後から仕様が変わったときの修正に苦労するのではないかと思います。
こういった判定が続くような時は、別関数にしてまとめています。

void proc(void)
{
if( check() ) {
for(;;) {
}
}
}
bool check(void)
{
if( !... ) {
return false;
}
if( !... ) {
return false;
}
if( !... ) {
return false;
}
if( !... ) {
return false;
}
return true;
}

判定の仕方は人それぞれあると思いますが、
個人的には一番下まで処理が来たら true で返るような処理の流れにしています。
ひとつひとつチェックして false で返しておくと、
それぞれにDebugOutputString()などのメッセージをはさみやすいのと、
トレースしたときに失敗している箇所が分かりやすいというメリットがあります。
また書き方を統一しておくと詳細まで見なくても流れが分かりますので、
保守をしやすくなります。
チェック関数としてまとめておけば関数名で何の判定をしているのか分かりやすくなるのと、
メインの処理が短くなるため処理の流れを追いやすくなります。
処理の流れが追いやすい=バグ発見がしやすいことにもつながってきます。
ちょっとした工夫ひとつでスッキリしたプログラムになります。
別関数に分けるのは多少面倒ですが、できるところはキッチリ組んでいきましょう!
輝ける明日のために!(笑)

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE