昔かかわっていたソフトウェアについて同僚から質問された。3年以上前のVisualBasic5.0のソースコードだ。回路と通信する部分なのだが、エラーチェックのためにややこしい処理をしている。ところどころ自分が手を入れた形跡があるが、もともと上司の書いたソースなので処理の内容はほとんど覚えていない。

正常な動作を追跡することで問題の関数の動作はどうにか解読することができた。てこずった理由の一つはソースがまずいことにある。問題の関数はかなり長く100行以上あるが、これでも短い方で、300行以上の関数がごろごろあるのだった。
さらにグローバル変数やソーススコープの変数が多く、変数の中身がどこで変化しているのかを追うのが大変だった。その上、変数の意味が推測しにくいことこの上ない。例えばCheckNumという変数があったが、これだけで何のための変数かわかるだろうか?

関数の長さもグローバル変数も変数名も、CODE COMPLETE 第2版 上 完全なプログラミングを目指してなどで詳細に考察されている。関数の長さや変数の名前は一見取るに足りないことに見えるが、本当はとても重要なのだ。Ruby作者のまつもとさんも「名前重要」と言っている。(ちょっとちがうか)

今書いているソースはこういうことにならないように気を付けよう。