プログラムTIPS

DEMO PROGRAM ヘキサドライブでは様々な研究開発をしています。その一部を紹介。

C++コーディングルール:階層を掘りすぎない(2008年9月30日)

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

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()などのメッセージをはさみやすい
・デバッガで処理を追っていくときに、失敗している箇所が分かりやすい
ということが上げられます。
 
このようにチェック関数としてまとめておけば、
メインの処理が短くなるため処理の流れを追いやすくなります。
処理の流れが追いやすい=バグ発見がしやすいことにもつながってきます。
 
ちょっとした工夫でスッキリしたプログラムになります。
できるところはキッチリ組んでいくようにしましょう!

【免責事項】

本サイトが提供している情報に関しては、安全性等、いかなる保証もされません。 株式会社ヘキサドライブは、これらの情報をあなたが利用することによって生ずるいかなる損害に対しても一切責任を負いません。

【著作権】

本サイトが提供しているコンテンツについては、特に断りのある場合を除き、株式会社ヘキサドライブが著作権を有します。