在CPP文件中为函数定义添加前缀是一个好的做法吗?

时间:2012-03-12 16:30:36

标签: c++

// classone.h
namespace NameOne
{

class ClassOne
{
public:
    ...
    void FuncOne();
    ...
};

}

// *** Method 1 *** 
// classone.cpp
namespace NameOne // always define member functions inside the namespace
{

void ClassOne::FuncOne()
{ ... }

}

// *** Method 2 *** 
// classone.cpp
void NameOne::ClassOne::FuncOne() // always prefix the namespace
{ ... }

问题>我已经看到两种方法来处理CPP文件中的命名空间。在大型项目中哪种方法更好(即方法1或方法2)

谢谢

6 个答案:

答案 0 :(得分:4)

如果它不在头文件中,只要你一致就没关系。我个人更喜欢第一种方法,因为当您阅读函数名称时,命名空间并不那么相关。

答案 1 :(得分:1)

这是我使用using namespace X唯一情况 我认为这是一个好的用法(但我仍在考虑它),但愿意听到其他观点。

在文件Bar.cpp

// Bar in namespace Foo
#include "Bar.h"

// Only do this for the class I am defining
using namespace Foo;
Bar::Bar()
{
}
void Bar::stop()
{
}
// etc

我一直在努力:

// Bar in namespace Foo
#include "Bar.h"

// Only do this for the class I am defining
using Foo::Bar;
Bar::Bar()
{
}
void Bar::stop()
{
}
// etc

答案 2 :(得分:0)

我想这完全取决于您个人的偏好,除此之外,还取决于代码库中已经使用的内容,您正在编写代码。

答案 3 :(得分:0)

我更喜欢添加using namespace NameOne。方法1增加了缩进,方法2使声明更长,但这只是个人意见。只需在代码(和代码库)中保持一致。

答案 4 :(得分:0)

我确信我记得在C ++中引入名称空间的时候,方法2是最好的方法,当然比方法1更受欢迎,这就是我一直使用的方法。

答案 5 :(得分:0)

使用命名空间的原因通常是在具有一致功能的组/包中收集类/方法,以使它们与其他库或命名空间中的定义(字面和功能)不一致。

因此,我更喜欢cpp文件中的using namespace Foo,因为大多数时候我在同一名称空间中引用不同的类。如果我需要使用另一个命名空间中的类,我绝对使用Foo2::后缀。它保持已实现的命名空间与其他命名空间之间的距离。