這兩天看了C++ FAQ印刷版,中文名為C++經典問答。
其中說到,如果程序員不寫能夠自動測試自己的對象(簡稱自測對象),他維護調試自己的代碼就是在碎玻璃上爬。
所謂自測對象,就是能夠自動測試自己的的不變式(invariant)的對象。
一個自測對象例子:
#include <cassert>
class CTestMe{
public:
CTestMe()
{ //init myself
//...
test_invariant();
return;
}
~CTestMe()
{
test_invariant();
//destroy me
return;
}
test_invarivant();
{
assert(...);
assert(...);
assert(...);
}
}
BTW:
由此想到,我知道的一些“精通”面向對象設計的程序員從來不對任何代碼(例如一個函數,一小段算法)進行自測(這裡的自是指代碼,不是指人)的。我有點懷疑他們是否了解程序設計的基本原理。