他のプログラマに「バグ」ではなく「仕様」だと主張するためには assert() 関数を使います。
assret() 関数に自分のソースコード中で成り立つ恒等式を記述しておくことで、他のプログラマに対して「私はこの条件を満たしていることを前提に開発している」と主張することができるようになります。もし assert() 関数に書いた条件が満たされない場合は警告が表示されるようになります。
int someFunc(int arg) { // arg は0以外の数値である必要がある assert(arg != 0); // 関数の中身 }
もし assert() 関数の警告に遭遇してしまった場合は、その仕様がアプリケーション全体として問題ないかを検討し、問題ある場合は、その assert() を使ったプログラマーや上長と議論するなどして解決する必要があります。 CVS と同様で assert() 関数を使う=ソフトウェアの品質が上がるということではありません。 assert() 関数はきっかけに過ぎません。
また、 assert() 関数には副作用のある式を書くことはできません。これは assert() 関数がリリース時に削除される可能性があるためです(普通は削除します)。
int someFunc(int arg) { // やってはいけない!これはリリース時に無くなる! assert(arg++); // 関数の中身 }
assert() 関数はエラー処理ではなく、あくまで品質向上の仕組みというわけです。
Contributions