重型构造函数或使用方法

Cyl*_*ric 3 c#

这两种方法都对我有用,但我不确定从"良好实践"的角度来看这个建议是什么.

我有一个在我的库中执行各种控制功能的类,因此需要初始化各种对象和属性.

是否可以将所有这些逻辑放在类的构造函数中,或者我应该将它放在"Initialise"方法中.

public MyClass()
{
    mSubObjectA = new mSubObjectA();
    mSubObjectA.DoStuff();
    mSubObjectA.DoMoreStuff();

    mSubObjectB = new mSubObjectB();
    mSubObjectC = new mSubObjectC();

    if (something)
    {
        DoStuff();
    }
    else
    {
        MagicHappens();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

就个人而言,我喜欢一个物体,在我收到它的时候可以完全投入使用.另一方面,在构造函数做很多工作确实有点味道.

另一种方法是编写一个静态工厂方法(或工厂类*),它可以调用构造函数之前完成所需的所有工作,然后使构造函数本身非常简单.您可以选择是否公开简单构造函数,具体取决于您的要求.

*工厂类可以提高可测试性,并允许可能不同的工厂实现.另一方面,在那一点上,你有一个非常高的抽象水平,这可能会分散注意力.