代码健康: 减少嵌套, 降低复杂性

作者: liuchengxu | 来源:发表于2017-06-11 10:52 被阅读250次

原文: Code Health: Reduce Nesting, Reduce Complexity


多层嵌套的代码不仅影响可读性,同时很容易导致错误。试着在下面同一份代码的两个版本中找出 bug:

spot the bug

答案: "wrong encoding" 和 "unauthorized" 错误被交换了. 在重构后的版本中,很容易发现这个错误, 因为在重构版本的检查中,被认为是错误的情况都被处理了。

error

上面所展示出的重构技术被称为保护条款 (guard clauses). 一个保护条款会检查一个判断标准, 如果标准未被满足, 那么它将会很快失败。它分离了计算逻辑 (computational logic) 与错误逻辑 (error logic). 通过消除在错误检查与捕获之间的认知鸿沟, 它释放了心理上的处理能力. 因此, 重构后的版本更具有可读性与维护性。

下面是一些在代码中减少嵌套的经验:

  • 条件判断的代码块不要跨度太大,相隔太远. 通过就近处理各种情况来增加可读性.(It increases readability by keeping things local.)

  • 当你的循环和分支超过 2 层时考虑重构.

  • 考虑将嵌套的逻辑分为独立的函数。比如, 如果你在一个循环中对一些对象进行处理, 这其中的每个对象都包含一个列表 (比如一个有着重复字段的协议缓冲区), 那么你可以定义一个函数来处理这里面的每个对象,而不是使用一个两层的嵌套循环.

减少嵌套会带来更加可读的代码,让我们更加容易发现 bug, 加速开发迭代和增强稳定性。尽你所能去简化代码!

相关文章

  • 代码健康: 减少嵌套, 降低复杂性

    原文: Code Health: Reduce Nesting, Reduce Complexity 多层嵌套的代...

  • 迭代器和生成器

    迭代器 为什么需要迭代器 传统的多个循环嵌套需要追踪多个变量,代码复杂度大,迭代器的出现旨在消除这种复杂性并减少循...

  • 为啥你写的代码总是这么复杂?

    摘要:有句话说得很好,“代码质量决定生活质量”,当你把软件的复杂性降低了,bug减少了,系统可维护性更高了,自然也...

  • 微服务优缺点

    Advantage 复杂性降低: 单个服务业务逻辑单一,边界清晰,开发维护每个服务成本降低。技术债减少: 技术升级...

  • 代码优化——减少if else嵌套

    总结下减少if else的方法: 1. 把接口分为外部和内部接口,所有空值判断放在外部接口完成;而内部接口传入的变...

  • HTML:怎么精简优化HTML的代码结构

    减少HTML嵌套 减少DOM节点数 减少无语义代码 删除http或者https,如果URL的协议头恶化当前页面的协...

  • Promise 手写 备战

    1.Promise 目的是为了解决嵌套太多回调地狱,为了降低异步编程的复杂性的一种解决方案。 源码解析 const...

  • css 预处理器

    预处理器能力: 嵌套 放映层级和约束 变量和计算 减少重复代码 Extend 和 Mixin 复用代码片段 循环 ...

  • 如何向SQL用户解释Javascript .filter() ,

    我发现使用.filter() .map()和.reduce() Array方法能够帮助减少代码的复杂性和简化许多典...

  • python的类与子类

    [TOC] 类 1、类的定义类是用来将代码与代码处理的数据相关联,有助于降低复杂性,更易维护代码;python也提...

网友评论

    本文标题:代码健康: 减少嵌套, 降低复杂性

    本文链接:https://www.haomeiwen.com/subject/lskhqxtx.html