アサーションでバグの原因を早期発見
PHPなどでは使ったこともあったけど、C言語でもサポートされているのを知った。
特徴
- 引数に、プログラムが仕様上満たしているべき条件式を記述する関数
- 偽の場合、デバッグに有益な情報を吐き出して停止する
- 簡単な自動テストができ、プログラムの意図しない動作を早期発見できる
- マクロ"NDEBUG"を定義すると、動作を無効化できる(リリース向け)
- CやJava、PHPなど様々な言語でサポート
- 契約プログラミング、テスト駆動開発などに利用可能
C言語でのサンプルコード
#include <assert.h>
int main() {
int a=2;
assert(a==1);
return 0;
}
実行例
偽の場合、ソースファイル名や行数、関数、条件式などが表示される。
test: test.c:5: main: Assertion `a==1' failed.
if〜printfを羅列したりするよりもお手軽で、高機能、可読性も高い、といいことずくめ。