2013-04-25 105 views
0

我正在編寫幾乎所有我的測試代碼都寫在頭文件中的項目。我這樣做主要是因爲我正在進行測試驅動開發,這導致了我添加的每個類的大量補充類:接口,測試,模擬等。如果我還必須處理,我想我會發瘋與所有這些文件的CPP版本...使用命名空間和頭文件

我不添加「使用命名空間標準」我的頭開始,因爲我知道這是一個不,不。總之,可以說,我現在我的初始化Blob對象在測試開始,如下:

Blob v = 
    boost::assign::list_of(std::pair<std::string, Container >("Scotland",Container(boost::assign::list_of(1)(2)(3).convert_to_container<std::vector<int> >()))) 
    (std::pair<std::string, Container >("Sweden",Container())); 

其中斑點是typedef版某處作爲std::vector<std::pair<std::string, Container > >

我該如何使這個更漂亮?我使用list_of的原因是爲了讓事情更具可讀性,但在這種情況下,我認爲這會讓閱讀變得更加困難。這是好了很多:

Blob v = 
    list_of(pair<string, Container >("Scotland",Container(list_of(1)(2)(3).convert_to_container<vector<int> >()))) 
    (pair<string, Container >("Sweden",Container())); 

,但我不能在頭做到這一點...

什麼可能我做才能解決這個問題?我正在使用C++ 98。

UPDATE:

只是一個想法。如果我將所有測試頭重命名爲cpp文件,該怎麼辦?

+3

你能解釋爲什麼TDD開發導致頭文件中的所有代碼? – Pradheep 2013-04-25 10:38:11

+0

@Pradheep它對我來說更方便,至少不必在Foo.h,Foo.cpp,TestFoo.h,TestFoo.cpp,MockFoo.h,MockFoo.cpp和IFoo.h之間跳轉。相反,我只有.h版本。我也必須創建所有這些文件並將它們放在正確的文件夾中。 – Baz 2013-04-25 10:40:25

+0

把更多的代碼放在cpp文件上意味着更多的編譯時間和更難以調試的問題,因爲所有的東西都會是相同的頭文件。它不是用戶在這裏的便利,而是構建時間更短,模塊化程度更好 – Pradheep 2013-04-25 11:04:09

回答

1

TDD需要短的編輯 - >編譯 - >運行週期時間。因此,您應該在cpp文件中儘可能多地編寫代碼以減少編譯時間。不過,你可以使用初始化函數解決你的問題:

inline Blob InitBlob() 
{ 
    using namespace boost; 
    using namespace std; 
    return assign::list_of(/*...*/); 
} 

Blob v = InitBlob();