自分を信じちゃいけないよ -assertの効用-

とあるそれ程難しくないデータ構造とそれを操作する関数を実装してたのだけれど、一気に書いてコンパイルエラー潰したら動作するさ、と思ったらデバッグで数時間ハマりました。一気に書いたコードにバグがまぎれてしまうと検出が非常に難しい。
よく言われることですが、「プログラムは意図した通りに動かない、書いた通りに動く」と言います。プログラマの意図とコードに矛盾がある時にバグが発生するわけです。それに対してassertは書き手の意図をプログラムに保証させることが出来るわけで、開発中には面倒臭がらずにassertを仕込まないと駄目だな、と思いました。
というわけで一旦デバッガを使う手を休め、モジュールの状態が変化する各ステップにチェックルーチンをしっかり組み込んだら、割と早い目に問題が見つかりました。最初にデバッガで値を追いかけて頭を悩ませていた時間がもったいなかったです。
なるべくデバッガで値を確認してどうこう、という手段に頼らずにこういう自動的に問題を検出する方法で開発をしていきたい。と思いつつ、時間がもったいない時や問題を過小評価している時は良く今みたいな問題が発生するんですけどね。