我们有一个Transaction
类,它非常容易加载;所以加载,我原本最终通过了近20个参数ctor
。提取几个值对象后,仍然有12个参数,我仍然认为它太多了。构造函数的参数太多
我该如何去避免这种情况?我认为将参数传递给构造函数是合理的,因为它们都是必需的,我想明确说明。我也喜欢如果我添加一个属性,我可以将其添加到ctor
,让我的编译器找到它打破的位置,而不必依赖测试本身。我不认为对象初始化器或者构建器能够解决这个问题。在未来的日子里,这些争论可能会变得更加明显,哪些争论是共同的,尽管如此。
public class MyEntity()
{
public MyEntity(ValueType prop2, ValueType prop3, ...)
{
Id = Guid.NewGuid();
Prop2 = prop2;
Prop3 = prop3;
...
}
public Guid Id { get; private set; }
public ValueType Prop2 { get; private set; }
public ValueType Prop3 { get; private set; }
public ...
}
这些参数可以用任何有意义的方式分组吗?如果不是,他们服务的目的是什么? – Oded
如果这些参数具有所有相同的类型,只需使用MyEntity(params Type []参数),然后以不同的方式组织它们,如通过List或Dictionary ...或者传递结构或类作为参数包含你需要的一切。另一种选择是使用构造函数冒泡。 –
@Zarathos - 这违背了DDD,域的含义就是它的全部内容。 – Oded