2013-04-25 103 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();