我刚刚看完YouTube上的Google干净代码视频(请参阅link,第一篇文章),内容是有关从代码中删除if语句并改用多态的方法。

看完视频后,我看了看视频之前写的一些代码,并注意到一些可以使用此方法的地方,主要是多次实现相同逻辑的地方。举个例子:

我有一些这样的代码。

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/

10-17 02:21