SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ぶち壊せ常識! リアルエンジニア道(AD)

コーディングスタイルの常識をぶち壊せ

ぶち壊せ常識! リアルエンジニア道 第1回

  • このエントリーをはてなブックマークに追加

素晴らしきマルチステートメントの世界!

 「マルチステートメント」。この単語を知っている方、覚えている方、どれくらいいらっしゃいますか? 80年代前半、主にインタプリタ言語においてもてはやされた、あの記述方法です。

マルチステートメントとは

 今では、

a=10;
b=20;
c=a+b;

 と書くところを、

a=10;  b=20;  c=a+b;

 のように書くのがマルチステートメントです。1行に複数の命令を記述する、とても気持ち悪い記述方法です。

 でも昔はちゃんと意味がありました。まだコンピューターが貧弱だった時代、マルチステートメントで記述することで、

  • ちょっとだけメモリが節約され、
  • ちょっとだけ処理スピードが上がった、

 のです。

 その後のコンピューター技術の発達により、マルチステートメントはその意味を失いました……。

復活!今風マルチステートメント!

 まずは次のソースを見てください。月ごとに代入文字列を変える処理、比較的分かりやすいソースです。

switch(month){
    case 1:
        tsuki="一月";
        koyomi="睦月";
        break;
 
    case 2:
        tsuki="二月";
        koyomi="如月";
        break;
 
    case 3:
        tsuki="三月";
        koyomi="弥生";
        break;
 
    case 4:
        tsuki="四月";
        koyomi="卯月";
        break;
 
    case 5:
        tsuki="五月";
        koyomi="皐月";
        break;
 
    case 6:
        tsuki="六月";
        koyomi="水無月";
        break;
 
    case 7:
        tsuki="七月";
        koyomi="文月";
        break;
 
    case 8:
        tsuki="八月";
        koyomi="葉月";
        break;
 
    case 9:
        tsuki="九月";
        koyomi="長月";
        break;
 
    case 10:
        tsuki="十月";
        koyomi="神無月";
        break;
 
    case 11:
        tsuki="十一月";
        koyomi="霜月";
        break;
 
    case 12:
        tsuki="十二月";
        koyomi="師走";
        break;

    default:
        tsuki="";
        koyomi="";
        break;
}

 これを今風マルチステートメントで記述してみましょう!

switch(month){
    case  1: tsuki=  "一月";  koyomi=  "睦月";  break;
    case  2: tsuki=  "二月";  koyomi=  "如月";  break;
    case  3: tsuki=  "三月";  koyomi=  "弥生";  break;
    case  4: tsuki=  "四月";  koyomi=  "卯月";  break;
    case  5: tsuki=  "五月";  koyomi=  "皐月";  break;
    case  6: tsuki=  "六月";  koyomi="水無月";  break;
    case  7: tsuki=  "七月";  koyomi=  "文月";  break;
    case  8: tsuki=  "八月";  koyomi=  "葉月";  break;
    case  9: tsuki=  "九月";  koyomi=  "長月";  break;
    case 10: tsuki=  "十月";  koyomi="神無月";  break;
    case 11: tsuki="十一月";  koyomi=  "霜月";  break;
    case 12: tsuki="十二月";  koyomi=  "師走";  break;
    default: tsuki=      "";  koyomi=      "";  break;
}

 こうなりました。実にコンパクトに、そして視認性良くまとまりました。

 筆者がこれを実践したとき、「なんでマルチステートメントなんだ!」と大いに物議を醸したものです。もう遠い過去のものとされた記述法を持ち出したのですから批判されるのも当然と言えば当然です。しかし一度これに慣れた人はやめられなくなります。

 今一度、良く見てください。

 各caseに対応する処理が縦に綺麗に並び、一目で確認できます。ケアレスBUGの混入が防げるため、メンテナンス性が上がり、またソースもコンパクトにまとまるため、いいことづくめです。

 もし「いや! それはおかしい!」と反論したくなったとしたら、それはあなたが凝り固まった常識に囚われているせいかもしれません。

 ぶち壊せ常識! リアルエンジニア道、ここに極まりです。

 例のような単純な繰り返しが続く場合に有効です。複雑な処理を無理矢理マルチステートメントにすることは全くもってお勧めいたしません。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ぶち壊せ常識! リアルエンジニア道連載記事一覧

もっと読む

この記事の著者

たにさん(タニサン)

 本名:谷藤賢一。マイコンと呼ばれていた頃からパソコンの虜になり、パソコン歴はすでに四半世紀を超える。バブル時代は大学生とエンジニアの二重生活を送り、卒業後は、SEとして7社、制御系から業務系まで広く深く従事。SE引退後もライフワークで開発を続ける。プラネタリウムソフト「SUPER STAR」は天文界で高い...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3055 2009/04/02 17:29

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング