我最近尝试在模块中设计部分代码。我的问题是如何命名并保留它,以便名称/地址对于类很容易,并告诉所有关于类的目的。第一个想法是创建名为 Foo 的接口(抽象类),然后在名称空间 Foo 中创建类,这样我就会得到如下代码:
Foo* foo = Foo::Bar();
但是我们不能创建具有相同名称的命名空间和类。所以另一种方法是将接口作为封闭类并将指定的类(它们的声明)放在其中,然后定义那些指定的类:
class A {
public:
void foo() = 0;
class B;
class C;
};
class B : public A {
//
};
class C : public A {
//
};
我想知道这种类和接口的设计是不是很好的做法?或者我应该使用其他东西/从不介意基类的错误命名?
Big pro 正在命名。如果 - 例如 - 我将它用作异常系统 - 我可以编写如下代码:
Exception* exception = new Exception::IllegalArgument();
而不是:
Exception::Interface* exception = new Exception::IllegalArgument();
但是我注意到还有很大的 con 。我可以这样写:
Exception::IllegalArgument::Exception::IllegalArgument::Exce... exception;
那么,你怎么看?无论是类型的无限循环,还是我应该考虑不同的策略,这是无关紧要吗?
答案 0 :(得分:0)
这是一种漠不关心的做法。
我的意思是它既没有给你买那么多,也没有真正的缺点。
但是,规范只是将它们放在同一个命名空间中并完成它。
它看起来更清洁"如果你改变层次结构,至少有机会在没有太多流血事件的情况下完成它。