这两种方法都对我有用,但我不确定从“良好实践”的角度来看建议是什么。
我有一个类在我的库中执行各种控制功能,因此需要初始化各种对象和属性。
是否可以将所有这些逻辑放在类的构造函数中,还是应该将其放在“Initialise”方法中。
public MyClass()
{
mSubObjectA = new mSubObjectA();
mSubObjectA.DoStuff();
mSubObjectA.DoMoreStuff();
mSubObjectB = new mSubObjectB();
mSubObjectC = new mSubObjectC();
if (something)
{
DoStuff();
}
else
{
MagicHappens();
}
}
最佳答案
就我个人而言,我希望收到的元素能够完全投入使用。另一方面,在构造函数中做大量工作确实有点味道。
一种替代方法是编写静态工厂方法(或工厂类*),它可以在调用构造函数之前完成它需要的所有工作,然后使构造函数本身非常简单。您可以根据需要选择是否公开简单构造函数。
* 工厂类可以提高可测试性,并允许潜在的不同工厂实现。另一方面,此时您正在进行相当高的抽象级别,这可能会让人分心。
关于c# - 重型构造函数或使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336758/