我最近遇到了使用配置对象而不是通常的setter方法进行配置的类.一个小例子:
class A {
int a, b;
public:
A(const AConfiguration& conf) { a = conf.a; b = conf.b; }
};
struct AConfiguration { int a, b; };
Run Code Online (Sandbox Code Playgroud)
好处:
A(const AConfiguration& conf = AConfiguration()).缺点:
我缺少更多的缺点吗?如果没有:为什么不经常使用?
无论是单独传递数据还是按结构传递数据都是一种风格问题,需要根据具体情况来决定.
重要的问题是:对象在构造之后是否已准备好并且可用,编译器是否强制将所有必要的数据传递给构造函数,或者您是否必须记住在构造之后调用一堆setter,其编号可能随时增加没有编译器给你任何提示你需要调整你的代码.所以这是否是
A(const AConfiguration& conf) : a(conf.a), b(conf.b) {}
Run Code Online (Sandbox Code Playgroud)
要么
A(int a_, int b_) : a(a_), b(b_) {}
Run Code Online (Sandbox Code Playgroud)
并不重要.(有很多参数,每个人都更喜欢前者,但这个数字是多少 - 以及这样的类是否设计得很好 - 是值得商榷的.)但是,我是否可以使用这样的对象
A a1(Configuration(42,42));
A a2 = Configuration(4711,4711);
A a3(7,7);
Run Code Online (Sandbox Code Playgroud)
或者必须这样做
A urgh;
urgh.setA(13);
urgh.setB(13);
Run Code Online (Sandbox Code Playgroud)
在我可以使用该对象之前,确实会产生巨大的差异.特别是当有人出现并添加另一个数据字段时A.
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |