リストを見て、何か変だと感じませんでしたか?行番号が途中で飛んでいる ので、きっと編集ミスか、著者がリストの一部(大部分)を忘れてしまったと か感じたのではないでしょうか。
リストの左端の行番号によると、関数 SendTo Device は、何と2458行もあ るのです。これだけ長い関数を掲載すると、本文がなくなるどころか、雑誌1 冊分のページを消耗しつくしてしまいます。それで、やむを得ず「中略」とい うことにしました。
私は、かれこれ10年もの間、C言語とつきあっていますが、これだけ長い関 数を見たのは生まれて初めてです。口うるさい仲間に見せたり、ネットで流し たら、"Never Ending Function"とか、「最長不倒関数」とか言われてしまい ました。
これだけ長い関数、相当高性能なエディタと、一度に相当の行数を出せるディ スプレイがないと、スクリーン・エディタで編集などできるとは思えません。 私が日常使用しているのはNEmacsというUNIX上の相当強力なエディタですが、 それでもこれだけ長いと見るのに苦労します。縦にも横にも長いのですから、 一体どうやって作ったのか悩んでしまいます。
連載の第1回に「関数の長さ」の目安について書きましたが、やはり画面に 収まる、あるいはプリンタ用紙1枚に収まる程度の60行以内にしたいものです。 まあ、せめて100行以内になるよう努力してもらいたいものです。それが、 2500行近くもあるのでは、もう「絶句」しかありません。
長すぎる関数は絶対に「分割」しましょう。分割し、独立した「関数」にし てしまえば、デバッグのとき、より短くなった関数の中だけを注目すればすむ ようになるはずです。
こんな長い関数を書いてきたら、内容など調べる必要は一切ありません。 「長い!読めん!」といって、書き直させる以外に手はありません。こんな長 い関数のデバッグは、ライフワークになりかねません。
どうしてCコンパイラは、こんなに長い関数までコンパイルしてしまうので しょうね。あまりに長い関数はコンパイル・エラーで止まってしまうと、世の Cプログラマの質の向上が期待できるでしょう。
読者の皆様、これより長い関数がありましたら、ぜひ編集部までお送りくだ さい。ぜひこの「記録」を破ってください。きっと良い賞品がでます。DirtyC 探検隊のみなさま、よろしくお願いします。
1996年4月18日追記
もう、下手糞なCプログラムの募集は締め切りました。それでも、どうして も、もっと酷いプログラムがあるので是非世間の目に晒したいという方がいらっ しゃいましたら (fuji at pro.or.jp) まで御一報ください。何とか世間の目に触れるようなコーナーを設けること も検討してみます。