作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚刚在 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/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!