我有一个表单,其构造函数我已经重载以传递枚举类型和List<int>
。
现在我意识到我还需要传递另一个int
(不属于List<int>
)。
在什么时候它被认为是“好形式”(没有双关语意图)重新组合和重构并将所有这些参数封装到一个类中并传递给它?
还是有更好的方式(不需要Houdini式的手法)?
答案 0 :(得分:2)
您可以将字段公开为公共属性,并使用以下语法:
var myinstance = new MyType
{
Prop1 = val1,
Prop2 = val2,
Prop3 = val3
};
这可以节省您需要一次又一次地更改构造函数。我认为你的“什么时候最好......”这个问题,我个人认为,如果我希望它超过2或3(现在或将来),我将创建一个参数类。这可能会引起很多争论!
答案 1 :(得分:2)
在您开始为此功能创建新对象之前需要考虑的事项
您多久使用一次这个功能? 你有重复的代码吗?创建此类有助于删除重复的代码吗? 它是否提高了效率(代码性能和维护)? 哪个更快?客户并不关心这一点。
添加另一个带有更多参数的构造函数不会违反任何实践,但是如果你有一个废话加载的构造函数,它们会以奇怪的顺序调用自己,我建议重新考虑它......
如果您的应用需要,请添加它。具有:
public FormConstructor(List<int> someInts, MyEnumThing anEnumYay, int anotherInt)
不错 - 除了我的命名......
我的意见?如果我没有看到创建课程的任何潜在收益,我会添加Int。
创建一个“完全因为”你不想要很多输入参数的类是创建所述类的错误原因。
答案 2 :(得分:1)
我想这一切都取决于你在其他地方因改变而需要做多少重构。如果将所有内容都推送到新类中,那么应用程序的其他部分是否会停止工作?这会引入多少个错误? IMO有三个或四个参数可以,但是一旦我开始将5个或更多个参数添加到签名中,我倾向于创建一个类来处理这个工作。
引用等等可能会成为一个因素,因为如果你必须在一小时内完成工作,但是你需要三个人来创建一个类,更新其他代码并进行测试,你可能只需要添加一个新参数,稍后再重新访问。