减少嵌套,降低代码复杂度

更新日期: 2018-01-12阅读量: 3653标签: 代码

这是我们'Code Health'系列的另一篇文章。这篇文章的一个版本最初出现在世界各地的谷歌浴室,作为一个谷歌的厕所事件测试。你可以下载一个友好的版本在你的办公室显示。 —— Elliott Karpilovsky 


深度嵌套的代码会大大降低代码可读性,并且容易出错。请尝试在以下两个版本的代码中发现错误:  

答案揭晓:代码中输出wrong encoding和unauthorized错误信息的语句所对应的判断条件发生混淆,实际应该调换一下判断条件。在上图中蓝色区域的代码版本中需要层层抽丝剥茧才能发现这个bug,而在绿色区域的重构版本中能更容易的发现。

上面绿色区域的重构技术称为保护语句。一条保护语句只检查一个异常逻辑,如果条件没有满足,就能立即反馈当前程序出现的问题。最终实现将计算逻辑与错误逻辑分离开来。当我们在阅读逻辑分离后的代码结构时,思维也会立即转变为错误处理语句块和正常计算处理语句块,对比之前的if-else四重嵌套结构,重构版本更易于阅读和维护。


以下三条准则能帮助你在代码中尽量减少嵌套:

1. 条件语句块尽量的简短。
2. 当循环和分支超过两层时,考虑重构。
3. 将嵌套逻辑移动到单独的函数中。例如,如果您需要遍历每个包含列表的对象列表(例如带有重复字段的协议缓冲区),则可以定义一个函数来处理每个对象,而不是使用双重嵌套循环。

减少嵌套会让代码可读性更好,同时也能更容易的找出bug,开发人员可以更快的迭代,程序也会越来越稳定。
简化代码,让编程更轻松!

翻译来源   原文地址

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/350

关于 Google 发布的 JS 代码规范

Google为了那些还不熟悉代码规范的人发布了一个JS代码规范。其中列出了编写简洁易懂的代码所应该做的最佳实践。代码规范并不是一种编写正确JavaScript代码的规则,而是为了保持源代码编写模式一致的一种选择。

js函数式编程与代码执行效率

函数式编程对应的是命令式编程, 函数式编程的核心当然是对函数的运用. 而高阶函数(Higher-order)是实现函数式编程的基本要素。高阶函数可以将其他函数作为参数或者返回结果。所以JS天生就支持函数式编程

后端传过来一个JS代码,前端拿到之后执行

今天收到了一个需求,居然是后端给我传过来一个JS代码,然后前端去执行。因为后端传过来的JS代码是一个字符串,所以刚开始有点懵,以前也没有做过这样的东西所以刚开始没有方法。

写优雅的代码,做优雅的程序员

软件工程学什么? 学计算机,写程序,做软件,当程序员。听说学计算机很辛苦? 是的,IT行业加班现象严重。在计算机世界里,技术日新月异,自学能力是程序员最重要的能力之一。选了这个专业,就要时刻保持好奇心和技术嗅觉,不能只满足于完成课内作业。

编写优秀CSS代码的8个策略

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。

如何写出优雅的 JS 代码?使用 SOLID 原则

把这六个原则的首字母联合起来(两个 L 算做一个)就是 SOLID (solid,稳定的),其代表的含义就是这六个原则结合使用的好处:建立稳定、灵活、健壮的设计。下面我们来分别看一下这六大设计原则。

当一个程序员写不出代码了,该怎么办?

即使是最优秀的程序员也会遭遇无法解决的软件工程问题。碰到这样的问题,并不一定意味着你缺乏技能或知识。编程不是一项容易的工作,我们可以通过采取非正统的方法来保持你想要的生产力水平

什么样的代码叫好代码?

代码的本质还要在机器上运行,好的代码不单单的纯粹的简单的几个字符的问题,好的代码不仅仅是排版上或者语法上好看,还要能经过产品的测试验证,这是评判代码好坏的最准确的标准

TypeScript 来做依赖注入的限制

依赖注入 是编写可测试/复用代码的关键。 在 TypeScript 中所有对象、属性和方法都有类型,可以大幅简化人工标注的代码,这让很多人重新考虑在 JavaScript 中实现依赖注入。 比如 Angular2 以后的 DI 实现

什么才是优秀的代码?

究竟什么是优秀的代码?Robert Martin的一句话可以完美诠释。代码质量的唯一衡量标准是每分钟说多少次WTF,我来解释一下这句话。当我在做code review时,通常会有三种不同的感受:

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!