我们应该如何在C ++中实现实用程序/帮助程序模块?

时间:2013-01-15 08:57:51

标签: c++

1)实用程序类,仅使用静态方法,阻止复制和创建

class myUtils
{
public:
    static void utilFunc();
    static void utilGreatFunc();

private:
    utils() { } // block creation
    utils(const utils &) { }
    ~utils() { }
}

2)使用命名空间

namespace myUtils 
{
    void utilFunc();
    void utilGreatFunc();
}

这样做的最佳方式是什么?我认为命名空间方式,对我来说更清晰,编写更简单。或者也许还有其他更好的设计?

2 个答案:

答案 0 :(得分:2)

您永远不会在C ++中使用“带有静态方法的实用程序类”。这是一个Java主义。相反,使用您的第二个解决方案并将函数放在namespace中。

答案 1 :(得分:1)

几年前,有很多关于辅助类的讨论仍然可以搜索和阅读。我对此的看法是辅助课几乎总是一种难闻的气味(一种强烈的气味)。他们让我们看到程序员不知道在哪里放置他的代码,然后他创建了一个MyBagOfThingsHelper类,它打破了OOP最基本的原则。

可能最重要的是SRP。问问自己:MyBagOfThingsHelper类负责哪个?

它产生的强耦合怎么样?

我知道这既不是你要求的,也不是你想读的,但最好的既不是命名空间也不是类,但要避免它们,避免它们。