その他の工夫ここでは、他のページでは書いていない細かい部分に言及します。アサーションC++にはassert関数がありますが、これにはいくつか不満な点があります。アサーションに引っかかった時(条件式がfalseの時)にメッセージを出す機能が無い。デバッグモード時にしか有効にならない。Javaのassertはこの辺が融通きき、デバッグ用にメッセージ出せるし、実行時にアサーションの有効/無効を切り替えれます。いう訳で、無ければ作ろうって事で自作しました。1の行は、デバッグモードなら常に1で、リリースモードなら適当に切り替えるとかって処理をしていますが。"xが9より大きいです。);と書いておくと、条件が成り立たない場合は、関数名・ファイル名・行数と共にメッセージが出力されます。このアサーションを使って、まずはデバッグモード・アサーション有効で走らせて、その後リリースモード・アサーション有効で更にテストするとかって事をしています。ASSERTマクロの他にASSERTL(軽いアサーション。速度的にクリティカルでない部分で使い、基本的に常に有効)とかASSERT_HEAVY(重いアサーション。基本的にデバッグモード時のみ有効)とかも作りました。アサーションは結構有効で、デバッガで一通り動作を見ても発見出来なかったバグが見つかる事もありました。アサーションを過信するのも禁物ですが、実装しておいて損は無いと思います。範囲チェック配列またJavaの話になりますが、Javaの配列は添字が配列の範囲内に収まっているかチェックして、範囲外なら例外投げてくれます。これと同じ事をしたくて、範囲チェック配列を作りました。実装は下記の様になっています。