中年|我们公司是如何把项目中的2100个if-else彻底干掉的?


中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

设计更好的软件 , 替换If-Else的5种方法 。 入门到高级示例
让我直接说这句话:If-Else通常是一个糟糕的选择 。
它导致设计复杂 , 代码可读性差 , 并且可能导致重构困难 。
但是 , If-Else已成为事实上的代码分支解决方案 , 这确实是有道理的 。 这是向所有有抱负的开发人员讲授的第一件事 。 不幸的是 , 许多开发人员从来没有前进到更合适的分支策略 。
有些人的口头禅是:If-Else是一把锤子 , 一切都是钉子 。 关注公众号互联网架构师 , 回复关键字2T , 获取最新架构视频
无法区分何时使用更合适的方法是区分大三学生和大三学生的原因之一 。
我将向您展示一些技巧和模式 , 这些技巧和模式将终结这种可怕的做法 。
每个示例的难度都会增加 。
1.完全不必要的Else块
这也许是那些初级开发人员最负罪的之一 。 下面的示例很好地说明了当您被认为If-Else很棒时会发生什么 。
中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

只需删除else`块即可简化此过程 。
中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

看起来更专业吧?

您会经常发现 , 实际上根本不需要其他块 。 像在这种情况下一样 , 您想要在满足特定条件的情况下执行某些操作并立即返回 。
2.价值分配
如果您要根据提供的某些输入为变量分配新值 , 请停止If-Else废话-一种更具可读性的方法 。
中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

尽管很简单 , 但它却很糟糕 。 首先 , If-Else很容易在这里被开关取代 。 但是 , 我们可以通过完全删除else来进一步简化此代码 。
中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

如果不使用else , 则我们将剩下干净的可读代码 。 请注意 , 我也将样式更改为快速返回而不是单返回语句-如果已经找到正确的值 , 继续测试一个值根本没有意义 。
3.前提条件检查
通常 , 我发现 , 如果方法提供了无效的值 , 则继续执行是没有意义的 。
假设我们从以前就有了DefineGender方法 , 要求提供的输入值必须始终为0或1 。
【中年|我们公司是如何把项目中的2100个if-else彻底干掉的?】中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

在没有价值验证的情况下执行该方法没有任何意义 。 因此 , 在允许方法继续执行之前 , 我们需要检查一些先决条件 。
应用保护子句防御性编码技术 , 您将检查方法的输入值 , 然后继续执行方法 。

中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

至此 , 我们确保仅在值落在预期范围内时才执行主逻辑 。
现在 , IF也已被三元代替 , 因为不再需要在结尾处默认返回""未知"" 。
4.将If-Else转换为字典—完全避免If-Else
假设您需要执行一些操作 , 这些操作将根据某些条件进行选择 , 我们知道以后必须添加更多操作 。
中年|我们公司是如何把项目中的2100个if-else彻底干掉的?
本文插图

也许有人倾向于使用久经考验的If-Else 。 如果添加新操作 , 则只需简单地添加其他内容即可 。 很简单 但是 , 就维护而言 , 这种方法不是一个好的设计 。


推荐阅读