摘要:在重构法则上,这种叫法则,卫语句。在我们使用语句时,判断是否是错误的情况出现嵌套,可以是用语句,让失败前置。
问题:
当我们在写业务逻辑时候,不知不觉已经把代码嵌套了好几次:
if (true){ if (true){ if (true){ for (){ if (true){ 业务代码 } } } } }
在有比较复杂的判断和需要遍历处理业务时候,经常会出现上面这种情况,这些代码在执行起来是没问题。但是这样的代码是一次性代码,过一段时间,可能自己都不敢动这里的逻辑了,更何况下一个接盘侠呢。
这样的代码很难弄明白每个条件的作用和执行的流程,当你读到最里面一层的时候,估计你已经记不起来当初是为什么走进这个if的了,对代码的执行流程完全不可控了。因为执行你预期的流程并不明显,为了简化这种情况,需要将特殊情况隔离到立即结束执行的多带带条件中。
这样就能把箭头代码给拉平.
if (false){ } if (false){ } if (false){ } for (){ if (false){ continue; } 业务代码 }
这是其中一类,可以将失败前置。只要有一个条件不通过,就快速返回失败,如果到了最后一行,说明所有判断都通过,剩下的就是你预期的结果。而不是一直查成功。
在重构法则上,这种叫Guard Clause法则,卫语句。
还有一种重构方式,就是将复杂的业务逻辑从if块中抽取为一个业务方法,即使这个方法只被使用一次。这种常常用在循环块中,或者多个if...else块中。
开发中要深刻的理解到函数的作用,是代码的封装或者抽象。将复杂的业务逻辑进行封装抽象,让我们从业务接口解耦,不需要关注具体实现,从而简化我们的代码,使得复杂的业务逻辑读起来也有条不紊。
在我们使用if...else...语句时,判断是否是错误的情况出现嵌套,可以是用guard clause语句,让失败前置。如果if过多,可能出现多个失败code导致客户端解析困难,我们可以将所有错误结果包装为一个异常状态即可。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76421.html
摘要:总结遍历数组的时候应该尽量使用这些,灵活运用可以让代码更加优雅,这种尽可能使用函数和链式调用的风格很接近函数式编程,可以提高代码质量。 js中有很多可以遍历数组的API,既然已经封装的这么好,为什么不在平常开发的时候使用,本文讲讲forEach、map、filter、some、every、reduce这些API的使用,并且和普通的for语句作对比。 我们以一个对象数组作为测试数据: c...
摘要:高性能小结文章转载于我的博客最近看完了动物丛书的高性能,觉得那本书的小结部分写得非常不错,简洁轻快易懂概括性很强。由于局部变量存在于作用域链的起始位置,因此访问局部变量比访问跨作用域变量更快。 高性能javascript小结 文章转载于我的CSDN博客:http://blog.csdn.net/hello_world_20/article/details/46793317 最近看完了动...
摘要:在所写的畅销书籍基础教程中讲到了递归生成器的用法。二易懂的程序其实,递归生成器非常简单,主要分为两部分基线条件和递归条件。我们以易懂通俗的方式来解释递归生成器的用法,并且依次打印列表中的数字。 在Magnus Lie Hetland所写的畅销书籍《Python基础教程》中讲到...
摘要:为何重构重构有四大好处重构改进软件设计如果没有重构,程序的设计会逐渐腐败变质。经常性的重构可以帮助维持自己该有的形态。你有一个大型函数,其中对局部变量的使用使你无法采用。将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。 哪有什么天生如此,只是我们天天坚持。 -Zhiyuan 国庆抽出时间来阅读这本从师傅那里借来的书,听说还是程序员的必读书籍。 关于书的高清下载连...
阅读 1533·2021-11-23 09:51
阅读 1076·2021-10-12 10:12
阅读 2793·2021-09-22 16:06
阅读 3604·2019-08-30 15:56
阅读 3428·2019-08-30 15:53
阅读 3083·2019-08-29 16:29
阅读 2330·2019-08-29 15:27
阅读 2001·2019-08-26 10:49