MENU閉じる

LAB

C++cording プログラムTIPS

研究室プログラムTIPSC++cording 2008.9.30

C++コーディングルール:階層を掘りすぎない

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

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