【发布时间】:2015-06-28 20:13:26
【问题描述】:
注意:所有构建器仅用于单元测试。
所以我一直在创建构建器,并且在创建它们时,我开始注意到其他一些已经到位的构建器遵循了一些不同的模式。
我想我在这里问哪个更有效。
我的做法是这样的:
public class Builder
{
public Builders()
{
SetDefaults();
}
private void SetDefaults()
{
// Setting my defaults
}
}
另一种方式:
public class Builder
{
public Builder WithDefaults()
{
// Setting my defaults
}
}
在我看来,第一个更有效,因为您只需创建构建器,它会自动为您执行默认设置。
在另一种情况下,您必须在继续构建之前显式调用 WithDefaults 方法来设置所有默认值。
第二个似乎更容易出错,因为如果某些需要构建的对象没有设置所有字段,它们可能会抛出空异常。
也许我在这里遗漏了一些微妙的东西,所以我决定问你哪个更有效。
谢谢。
【问题讨论】:
-
如果您必须调用“WithDefaults”,它们并不是真正的默认值,是吗?
-
@JonSkeet 说得很好,谢谢!
-
好吧,如果我真的想为第二种方法找到一个专业人士,那就是这个:WithDefault 仍可用于将构建器属性重置为默认值....
标签: c# unit-testing default-value builder