私がこのようなプログラムを見たとき、まず、「何だ、このプログラムは!!」と感ずるのです。 それは、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です。 |
つまり、今回みなさんに見ていただいたプログラムは、この人の最長の関数だったのです。関数の 長さを求めたり、ヒストグラムを作るプログラムは、読者の皆様への「課題」ということにしましょ う。 100行を越えたら、「嫌だなあ」と感じてください。200行を越えたら、「恥ずかしくて誰 にも見せられない。早く直さねば!」と感じてください。この感覚を身につけることが、初心者卒 業の第一歩です。 以前私が作ったグラフィックス関係のプログラム(約12,000行)の関数長ヒストグラムを 図1−2に示します。特別に意識したわけではありませんが、2/3が20行以下、最長でも10 0行以下にちゃんとなっています。
|
オープンソース |
図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 ** |