『Cプログラミング診断室』目次次(第1章 普通の初心者 短くするには)

第1章 普通の初心者

何だ、このプログラムは!!


私がこのようなプログラムを見たとき、まず、「何だ、このプログラムは!!」と感ずるのです。 それは、66行からの関数call_melsecが極めて長いことです。なんと、関数ブロックが248行 もあることです。

「こんなプログラム、読む気もしません。」というのが本音です。

関数とは、一つのまとまりのある処理をするために書くのです。ですから、最初から最後までを 同時に頭にたたき込める長さ、つまり、目の届く長さにしなくてはならないのです。画面で一度に 見える範囲が一番よいのですが、パソコンでは25行程度しか見えないので、関数の長さを25行 以内にしなさいと言いたいが、それはちょっと無理でしょう。

一般に言われている関数の長さの限界は、プリンタ用紙1枚程度の60行前後です。まあ、許容 される限界は100行まででしょう。

これはC言語に限った話ではありません。どんな言語で書くにしても、関数とかサブルーチンの 長さを短くすることは、何よりも重要なことです。だいたい、能力の低いプログラマほど長い関数 を書いて、その関数が何をしているか分からなくなってしまうのです。処理のまとまり毎に関数に まとめてしまう「クセ」を身につけましょう。だらだらとケジメのないプログラムは、動作もケジ メなく、バグが取れないものです。

今回のソースファイルには、全部で6つの関数が含まれています。その各関数の行数を求めると、

          248   call_melsec
           28   status_mel
           33   watch_menu
          164   input_para
           94   input_batch
           69   main
  
となっていました。そして、この人から送られてきた全ソースプログラムの関数の長さの分布が図 1−1です。


図1−1 関数の長さのヒストグラム

   0-   9  45.6%     26  **************************
  10-  19  73.7%     16  ****************
  20-  29  86.0%      7  *******
  30-  39  89.5%      2  **
  40-  49  91.2%      1  *
  50-  59  91.2%      0  
  60-  69  93.0%      1  *
  70-  79  93.0%      0  
  80-  89  93.0%      0  
  90-  99  96.5%      2  **
 100- 109  96.5%      0  
 110- 119  96.5%      0  
 120- 129  96.5%      0  
 130- 139  96.5%      0  
 140- 149  96.5%      0  
 150- 159  96.5%      0  
 160- 169  98.2%      1  *
 170- 179  98.2%      0  
 180- 189  98.2%      0  
 190- 199  98.2%      0  
 200- 209  98.2%      0  
 210- 219  98.2%      0  
 220- 229  98.2%      0  
 230- 239  98.2%      0  
 240- 249 100.0%      1  *

つまり、今回みなさんに見ていただいたプログラムは、この人の最長の関数だったのです。関数の 長さを求めたり、ヒストグラムを作るプログラムは、読者の皆様への「課題」ということにしましょ う。

100行を越えたら、「嫌だなあ」と感じてください。200行を越えたら、「恥ずかしくて誰 にも見せられない。早く直さねば!」と感じてください。この感覚を身につけることが、初心者卒 業の第一歩です。

以前私が作ったグラフィックス関係のプログラム(約12,000行)の関数長ヒストグラムを 図1−2に示します。特別に意識したわけではありませんが、2/3が20行以下、最長でも10 0行以下にちゃんとなっています。

O'Reilly Japan刊

3/14発売
増刷:第3刷決定♪

オープンソース
Scheme言語処理系
Gaucheの愛好者団体

詳細はブログで


図1−2 きれいな関数の長さのヒストグラム

   0-   4  20.4%     84  ************************************************************************************
   5-   9  41.6%     87  ***************************************************************************************
  10-  14  56.7%     62  **************************************************************
  15-  19  68.6%     49  *************************************************
  20-  24  78.3%     40  ****************************************
  25-  29  84.9%     27  ***************************
  30-  34  88.3%     14  **************
  35-  39  89.3%      4  ****
  40-  44  91.0%      7  *******
  45-  49  92.9%      8  ********
  50-  54  94.9%      8  ********
  55-  59  95.6%      3  ***
  60-  64  96.1%      2  **
  65-  69  97.1%      4  ****
  70-  74  97.8%      3  ***
  75-  79  98.1%      1  *
  80-  84  99.0%      4  ****
  85-  89  99.5%      2  **
  90-  94 100.0%      2  **


Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
『Cプログラミング診断室』目次次(第1章 普通の初心者 短くするには)