【发布时间】:2017-03-24 16:49:05
【问题描述】:
对于实例化类而不使用显式构造函数而是初始化其某些属性的做法是否有标准术语?
new SomeClass { PropertyA = true, PropertyB = "ugly code is ugly" };
我猜可能会有一个标准的非判断性术语,然后可能是一个否定术语。
** --- ** --- 编辑后澄清评论和答案 --- *** ---
对象初始化就是这样。
阅读 cmets 后,我明白对象初始化本身并不是一个坏习惯;问题是缺少定义良好的构造函数来支持跨解决方案的对象初始化,这使得解决方案更难维护和理解。
对象初始化使用不当的例子:
- 类
Student有10个属性,包括Code和Program。 - 代码正在从 10 多个不同的点实例化此类。
- 每次,
Code和Program都是通过对象初始化来定义的。
在这种情况下,Student 类应该有一个构造函数强制 Code 和 Program 在实例化时传递。
【问题讨论】:
-
这是一个对象初始化器。这就是所谓的,无论好坏。这确实使用了构造函数:在这种情况下是默认构造函数。然后它分配一些属性。就像你为它写更多代码一样。我从未听说过有人对此进行评判,但毫无疑问有人找到了理由。
-
我想作者的意思是做 new SomeClass(true, "ugly code is丑陋") 和所显示的内容之间的区别。
-
我们不知道是否有这样的构造函数可以这样处理它。
-
我更新了问题,澄清了我所指的消极方面。问题没有正确提出,因此我得到了反对票。无论如何,这有助于我指出我现在在工作中重构旧代码时所面临的不良做法。
标签: c# instantiation terminology