如果一个类没有状态,我们应该将其包含在命名空间中还是生成静态函数。命名空间不能有私有函数,尽管类可以。例如:
方法1:
class Algorithms
{
static double calculate_bearing();
private:
static double function_used_by_calculate_bearing_function();
};
方法2:
namespace Algorithms
{
double calculate_bearing();
namespace __Internal
{
double function_used_by_calculate_bearing_function();
}
}
两者中哪种方法更可取?
我不喜欢使用class
+static
来模拟namespace
。这是一种针对不同语言限制的变通方法。
然而,在这种情况下,我会选择选项3,省略正向声明,并用内部链接定义它。
算法.hpp
namespace Algorithms
{
double calculate_bearing();
}
算法.pp
namespace
{
double function_used_by_calculate_bearing_function() { /* some calculation */ }
}
namespace Algorithms
{
double calculate_bearing() { /* use above function */ }
}