在C++類中設計函數時,我經常會考慮測試。因此,當我完成一個類的所有功能主義者時,經常會在課堂上添加幾個僅用於測試目的的功能。看看下面的例子:C++類中冗餘測試函數的影響
class SimpleClass
{
public:
int a;
int b;
void fun1();
void fun2();
void testIntermediateResult();
private:
void _fun1();
void _fun2();
};
在此功能只需要測試目的testIntermediateResult
。它是一個很好的做法只是離開該函數的類裏面,或者我應該做這樣的事情:
class SimpleClass
{
public:
int a;
int b;
void fun1();
void fun2();
#ifdef TESTING
void testIntermediateResult();
#endif
private:
void _fun1();
void _fun2();
};
這裏的理念是,當這個類已經完成測試,將給予客戶端,然後測試將被定義而這個函數不會在類中。因此,我的問題是:當課堂授予客戶端時,真的需要移除測試功能嗎?假設客戶端不會使用測試功能,那麼在類中添加多個冗餘測試功能會有什麼效果?謝謝。
我會稱之爲「測試」。 '#ifndef TESTING'聽起來像「如果我們沒有測試它」,這與你所描述的相反...... – starsplusplus
設計不要做太多的課程是更好的做法,不得不在他們內部放置任意的測試功能。 – juanchopanza
如果您喜歡未定義的行爲,這是很好的做法。如果你用'TESTING'定義了一個源,而另一個沒有定義,你就有未定義的行爲。 (當然,它可能會工作,但是你永遠不知道;如果我編寫一個編譯器,它不會編譯。) –