C# 我已经到了重构的临界点了吗?

C# 我已经到了重构的临界点了吗?,c#,parameters,constructor,refactoring,C#,Parameters,Constructor,Refactoring,我有一个窗体,我重载了它的构造函数以传入枚举类型和列表 现在我意识到我还需要传入另一个int(它不属于列表) 在什么情况下,重新组合、重构并将所有这些参数封装到一个类中并传递这些参数被认为是“好形式”(并非双关语) 或者有没有更好的方法(不需要胡迪尼式的花招)?您可以将字段公开为公共属性,并使用以下语法: var myinstance = new MyType { Prop1 = val1, Prop2 = val2, Prop3 = val3 }; 这节省了您一次又一

我有一个窗体,我重载了它的构造函数以传入枚举类型和
列表

现在我意识到我还需要传入另一个
int
(它不属于
列表

在什么情况下,重新组合、重构并将所有这些参数封装到一个类中并传递这些参数被认为是“好形式”(并非双关语)


或者有没有更好的方法(不需要胡迪尼式的花招)?

您可以将字段公开为公共属性,并使用以下语法:

var myinstance = new MyType
{
    Prop1 = val1,
    Prop2 = val2,
    Prop3 = val3
};

这节省了您一次又一次地修改构造函数的时间。关于你的“什么时候最好……”问题,我个人同意如果我期望它增长超过2或3个(现在或将来),我将创建一个parameters类。这可能会引起相当多的争论

我想这一切都取决于你需要在其他地方进行多少重构。如果将所有内容都推到新类中,应用程序的其他部分是否会因此停止工作?这可能会引入多少bug?IMO有三个或四个参数是可以的,但一旦我开始在签名中输入5个或更多参数,我倾向于创建一个类来处理该作业


引号等可能成为一个因素,因为如果您必须在一小时内完成工作,但创建一个类、更新其他代码位和进行测试需要三个人,那么您可能只需要添加一个新参数,然后再重新访问它

>P>>P>>P>>P>>P>>P>> 您多久使用一次此功能? 你有重复的代码吗?创建此类是否有助于删除重复代码? 它是否提高了效率(代码性能和维护)? 哪个更快?客户对此并不在意

添加另一个具有更多参数的构造函数并不违背任何实践,不过如果你有一大堆以奇怪顺序调用自己的构造函数,我建议你重新考虑一下

如果应用程序需要,请添加它。具有:

public FormConstructor(List<int> someInts, MyEnumThing anEnumYay, int anotherInt)
public-FormConstructor(列出一些int、MyEnumThing-anEnumYay、int-anotherInt)
还不错-除了我的名字

我的机会?如果我没有看到创建类的任何潜在收益,我会添加Int


创建一个类“仅仅因为”你不需要太多的输入参数是错误的创建该类的原因。

请注意,如果你采用这种方法,你只需要在该上下文中需要新的参数/属性时修改现有的代码。一个小时?穿上裤子花了我一个小时。5个参数——总是5个参数。这是一条绝对不可改变的规则。我很惊讶它会编译成更多:-)不过,说真的,这取决于函数、参数和你传递的内容的性质。对于母语可能不是英语的读者来说,pm_2说5个参数是“铸造规则”是很幽默的。他给出的实际答案是“这取决于函数等。”我投了赞成票,因为这让我咯咯笑了起来,然后意识到有些人可能会感到困惑。