如何组织字段初始化以减少维护开销

本文关键字:维护 开销 何组织 字段 初始化 | 更新日期: 2023-09-27 18:08:07

我继承了一个类,它初始化了许多私有字段——有些在构造函数中初始化(参见dContext),有些通过字段初始化(参见random)。

public partial class Report_Aux
{
    public Report_Aux()
    {
        logger = Log.Instance;
        dContext = new DataContext(ConfigurationManager.AppSettings["DataContextConnectionString"]);
        created = Util.GetDate("constructor");
        ...
    }
    Log logger;
    DataContext dContext;
    Random random = new Random();
    DateTime created;        
    ...
}

这很令人困惑;重构它以减少太多字段和初始化的维护开销的最佳方法是什么?

如何组织字段初始化以减少维护开销

您的类有许多依赖项,或者是为了能够完成其工作而需要的东西。它的作业不需要包含创建这样的依赖关系。您可以创建一个构造函数来公布这些依赖项是什么,类的创建者负责查看类是否拥有工作所需的所有工具。(另一种代码方法是将这些依赖关系简单地作为属性公开。)那么问题就变成了"谁提供这些依赖?"谁知道如何构建这个类?"

您可以考虑工厂方法。类的工作是使用它所能支配的工具执行任何逻辑,而工厂的工作是构建类并提供工具。这是它的唯一职责

class ReportAuxFactory 
{
     public Report_Aux Create()
     {
          // create dependencies? 
          // instantiate class, provide dependencies 
          return theInstance;
     }
}

如果您将其与那些依赖项的适当抽象结合起来,您将发现您可以使用符合共享接口但提供不同功能的不同实现来组合您的类。这可以使您的类对扩展开放,而无需修改。例如,它可能需要处理不同的数据源或记录器。它还可以使类更容易测试。