我有两个选择.要么创建一个在其构造函数中接受大量参数的类,要么创建许多setter方法和init方法.我不确定哪个是首选选项,是否应该在构造函数中接受一些参数,而其他参数可以通过setter手动设置?还是我过度思考这个?
这是一个相关的问题,我也是:成员名和构造函数参数名之间的冲突.
Luc*_*ore 26
如果你创建一个对象后你必须打电话set或init实际使用它...好吧,那只是一个糟糕的设计.
如果对象可用而没有按照您希望的方式初始化某些成员,则可以稍后进行设置.
这里的黄金法则是 - 如果您创建一个对象,您应该能够使用它而无需进行任何其他类型的初始化.
假设您的形状有10个边,10个角,颜色和名称,可以连接到不同的形状.构造函数应该如下所示:
MyShape(Point c1, Point c2,...., Point c10, Color c, Name n)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我省略了连接的形状,因为NULL如果当前对象未连接,它可以合理地设置.但是,在没有任何其他参数的情况下,该对象无效,因此应在构造函数中设置它们.
可能的重载(可选地,默认参数)可以是:
MyShape(Point c1, Point c2,...., Point c10, Color c, Name n,
MyShape* connectedShape /*=NULL*/)
Run Code Online (Sandbox Code Playgroud)