我們有一個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