C#更改现有类-最佳实践开放/关闭原则



我正试图找出更改现有类的最佳方法。所以这个类被称为ExcelReport,它有一个方法Create(数据,标题(。这是生活和使用在许多地方。最近我想改变这种方法,这样我就可以在excel中格式化列了。创建(数据、标题、列格式(

为了不打乱我现有的程序,我能想出的最好办法就是添加另一种方法为类创建2(数据、标题、列格式(。

好吧,我收到了很多建议,说我应该用重载方法修改现有的类,我照做了。但这并没有打破开放/关闭原则,因为我现有的课程正在生产中。我应该用新的改进方法创建一个新的类ExcelReport2(和Interface(,并使用依赖项注入将其传递到我的新程序中吗?

谨致问候,Niall

正如注释所示,最好的方法可能是使用重载方法。在大多数情况下,如果可能的话,我会将重载方法实现为直通。

Create(data, headings, columnformats)

将使用列格式转换数据并调用:

Create(data,headings)

在方法的末尾。这意味着在Create方法的所有情况下,调用具有2个参数的版本,而需要3个参数的情况则作为传递处理。这保持了干扰最小的规则,并避免了在未来需要维护代码时出现混乱,因为您没有复制中的逻辑

Create(data,headings)

编辑:此方法的一个重要考虑因素是,如果columnformats不修改数据或标题,您可能无法按概述实际使用。在这种情况下,您将使用Create(data, headings, columnformats)作为基本方法,Create(data,headings)充当该函数的传递。在这种情况下,Create(data,headings)将设置一个默认值,然后将其传递给Create(data, headings, columnformats)

最新更新