シリアライズ第9回〜switch case文を簡素にしたい〜


目次に戻る


今朝4時頃雷が落ちたのか停電になった。PCのプラグは差しっぱなし、電話線もモデムにつなぎっぱなし。電気が復旧してからプラグを抜いても意味がないことを知りつつ、プラグを抜いた。雷が収まった後、電源を入れてみたがどうやら壊れてはいないっぽい。ただ、モデムの方はまだチェックをしていない。
古い98シリーズだから、壊れると部品が無くて困っちゃうんだよね〜。
 
 
本日の小枝 シリアライズ第9回〜switch case文を簡素にしたい〜
これは、シリアライズとは直接関係ないのですが、前々回予告をしていたのでシリアライズとして紹介します。
 
プログラムを作っている時に
switch〜case の使用例
switch( flag ){
    case AAAA:
        :
    case BBBB:
        :
    case CCCC:
        :
        :
}
というようにcaseが延々と続くswitch文がでることがしばしあります。case文の内容が
単純なcase文
case AAAA:
    printf("おぉ!AAAAだ\n");
    break;
等のように数行で終わってしまうのでしたらまだ良いのですが、
複雑なcase文
case BBBB:
    if( flag2 > MIN_LINE ){
        switch( flag2 ){
            case TYPE1:
                 :
            case TYPE2:
                 :
                 :
                 :
        }
    }
    break;
等のように複雑になると、switch文の全容がつかみにくくなり読みにくいソースになってしまいます。
このような場合どうすれば読みやすいソースになるのかと言いますと、case文の内容を別関数にします。関数を新しく作るという作業が加わりますが、後々の保守を考えれば大した労力ではありません。
case文の内容を関数化する
switch( flag ){
    case AAA:   AAAExecute(); break;
    case BBB:   BBBExecute(); break;
          :
          :
}


目次に戻る