言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

腐ったコード

達人プログラマ割れ窓理論を真に受けて、私は基本的に etoys に関してはバグ修正以外の事はしない事にしている。そうなるとどうしても書くコード行数より読むコード行数の方が多くなる。この話は前にも書いた http://d.hatena.ne.jp/propella/20070511/p2 。色んな人のコードを読んで、こいつはアホだ、こいつもバカだと心の中でブツブツ言う毎日。ちなみに私が先週ほとんどの時間を費やしたのはイアンが仕込んだバグだ。バグ自体は NULL の嫌いなイアンが if (NULL == なんとか) を if(なんとか) と書き直してしまったというよくある話だが、Sugar がぶっ壊れていたのでバグを再現させるために Python でそれらしいスクリプトを書くのに時間がかかった。 VM にも単体テストがあれば防げた問題なのにと思うと悔しくてならない。それはさておき、とうとう自分の書いた数ヶ月前のコードがおそろしく醜い事に気が付いた。

etoys から Sugar のワクにドラッグする部分。個々のコードは普通だと思うんだけど、全体の見通しが悪くて、一見関係ない部分同士が依存している。これには訳があって、既存のコードを壊さないようにそーっとプログラムを書くと、どうしてもこうなってしまったのだ。スクイークマルチプラットフォームでの移植性の高さを誇りにしている。しかしそれが仇となり、ドラッグアンドドロップのような標準化されていない機能を実装するのは難しい。普通に C で書くほうがよっぽど簡単。

プログラムを最初から美しく書く事は不可能だ。しかし一回書いた醜いコードを数ヶ月に読み直す労力の方が大変なので、出来るだけ綺麗なコードが書けるように、コードレビューを開発プロセスに組み込めないだろうかと思う。http://www.unixuser.org/~euske/offline/memo/2007/a0.html#292031 を読んで思った。