首页 > 解决方案 > 类设计 - 带有公共设置器的 ctor 或属性

问题描述

非常简单的问题,假设我有一个具有 20 个引用类型属性的类,我知道这些属性只会在类创建时/类创建后立即设置,并且没有任何属性是真正强制性的。

在这种情况下,最佳实践是创建一个ctor接受 20 个属性(因为它们都是引用类型,null如果您愿意,仍然允许您通过)并确保我的所有属性都没有setter

或者 ...

根本没有一个ctor,只是为setter我的所有财产提供一个?

我倾向于后者,因为易于实现和(可以说)更简洁的代码,即使这不能保证对象不变性,但是这些类仅在内部使用,我知道无论如何我都不会更改它们。

编辑

如果你要投票结束这个问题,至少有礼貌地解释为什么你认为这个问题对于如此高的 SO 标准来说“不够好”。

如果这不是属于这里的问题,我真的不知道 SO 是为了什么。

标签: c#.net

解决方案


如果所有这些属性都不是强制性的并且它们不必是只读的,则不需要构造函数。没有人愿意调用带有 20 个参数的构造函数,尤其是在没有必要的情况下。

因此,即使这个问题往往是主观的,也要使用属性并省略构造函数。


推荐阅读