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

原文: 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, 加速开发迭代和增强稳定性。尽你所能去简化代码!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,169评论 19 139
  • 第一部分 打好基础 Laying the Foundation 第一章 欢迎进入软件构建的世界 Welcome t...
    白桦叶阅读 4,723评论 0 17
  • 王小波说,人在年轻的时候,最头疼的一件事就是决定自己这一生要做什么。这话让我高兴的同时也有一点淡淡的忧伤,...
    蜻蜓F阅读 270评论 6 9
  • 人生有酒天天醉 有谁能享千杯酒 薄酒一杯消了愁 问你到底服不服
    艺SZ楠阅读 172评论 0 0