c# - 您将如何重构此条件以使用多态性?

标签 c# .net polymorphism

我刚刚在 YouTube 上观看了关于从代码中删除 if 语句并改用多态性的 Google clean code 视频(参见 link,第一篇文章)。

看完视频后,我看了看我在看视频之前写的一些代码,发现了一些可以使用这种方法的地方,主要是多次实现同一种逻辑的地方。举个例子:

我有这样的代码。

public int Number
{
    get
    {
        string returnValue;
        if (this.internalTableNumber == null)
             returnValue = this.RunTableInfoCommand(internalTableName,
                                                    TableInfoEnum.TAB_INFO_NUM);
        else
             returnValue = this.RunTableInfoCommand(internalTableNumber.Value,
                                                    TableInfoEnum.TAB_INFO_NUM);
        return Convert.ToInt32(returnValue);
    }
}

RunTableInfoCommand 的作用并不重要,但最主要的是我有许多具有完全相同的 if 语句的属性,唯一改变的是 TableInfoEnum。

我想知道是否有人可以帮助我重构它,使其仍然做同样的事情,但没有任何 if 语句?

最佳答案

在看到其中一些(技术上正确的)回复后,这里只是一个警告,摆脱 If 语句不应该是你的唯一目标,目标应该是使你的代码可扩展、可维护和简单,如果这意味着摆脱 if 语句,很好,但它本身不应该成为目标。

在您提供的代码示例中,在不了解更多关于您的应用程序的情况下,并且假设您不打算扩展太多过去的空值测试,我认为 If (或者甚至可能是三元)更易于维护坦率地说是解决方案。

关于c# - 您将如何重构此条件以使用多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358389/

相关文章:

c# - 当输入为 IQueryable 时,无法让 Automapper 返回派生类型

c# - Sublime Text : How to recognize (and highlight) C# . NET 类、方法和属性名称?

c# - 无法加载文件或程序集 'Microsoft.Web.Iis.Rewrite.Providers, Version=7.1.761.0, Culture=neutral, PublicKeyToken=0545b0627da60a5f'

c# - 从 C# 程序监控 AWS 服务器性能的最佳方法是什么?

c# - 未找到引用程序集 - 如何获取解决方案中包含的所有 DLL

.net - 多个 .NET AppDomain 的代码示例

c++ - 我应该如何避免 SQL 超时?

c++ - 如何在多态中调用子对象的重载函数?

c# - BindingList 与我的类使用它的属性填充 ComboBox?