使用命名空间和头文件
问题描述:
我正在编写几乎所有我的测试代码都写在头文件中的项目。我这样做主要是因为我正在进行测试驱动开发,这导致了我添加的每个类的大量补充类:接口,测试,模拟等。如果我还必须处理,我想我会发疯与所有这些文件的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文件,该怎么办?
答
TDD需要短的编辑 - >编译 - >运行周期时间。因此,您应该在cpp文件中尽可能多地编写代码以减少编译时间。不过,你可以使用初始化函数解决你的问题:
inline Blob InitBlob()
{
using namespace boost;
using namespace std;
return assign::list_of(/*...*/);
}
Blob v = InitBlob();
你能解释为什么TDD开发导致头文件中的所有代码? – Pradheep 2013-04-25 10:38:11
@Pradheep它对我来说更方便,至少不必在Foo.h,Foo.cpp,TestFoo.h,TestFoo.cpp,MockFoo.h,MockFoo.cpp和IFoo.h之间跳转。相反,我只有.h版本。我也必须创建所有这些文件并将它们放在正确的文件夹中。 – Baz 2013-04-25 10:40:25
把更多的代码放在cpp文件上意味着更多的编译时间和更难以调试的问题,因为所有的东西都会是相同的头文件。它不是用户在这里的便利,而是构建时间更短,模块化程度更好 – Pradheep 2013-04-25 11:04:09