代码健康: 减少嵌套, 降低复杂性
2017-06-11 10:53
295 查看
原文: Code Health: Reduce Nesting, Reduce Complexity
多层嵌套的代码不仅影响可读性,同时很容易导致错误。试着在下面同一份代码的两个版本中找出 bug:
答案: “wrong encoding” 和 “unauthorized” 错误被交换了. 在重构后的版本中,很容易发现这个错误, 因为在重构版本的检查中,被认为是错误的情况都被处理了。
上面所展示出的重构技术被称为保护条款 (guard clauses). 一个保护条款会检查一个判断标准, 如果标准未被满足, 那么它将会很快失败。它分离了计算逻辑 (computational logic) 与错误逻辑 (error logic). 通过消除在错误检查与捕获之间的认知鸿沟, 它释放了心理上的处理能力. 因此, 重构后的版本更具有可读性与维护性。
下面是一些在代码中减少嵌套的经验:
条件判断的代码块不要跨度太大,相隔太远. 通过就近处理各种情况来增加可读性.(It increases readability by keeping things local.)
当你的循环和分支超过 2 层时考虑重构.
考虑将嵌套的逻辑分为独立的函数。比如, 如果你在一个循环中对一些对象进行处理, 这其中的每个对象都包含一个列表 (比如一个有着重复字段的协议缓冲区), 那么你可以定义一个函数来处理这里面的每个对象,而不是使用一个两层的嵌套循环.
减少嵌套会带来更加可读的代码,让我们更加容易发现 bug, 加速开发迭代和增强稳定性。尽你所能去简化代码!
多层嵌套的代码不仅影响可读性,同时很容易导致错误。试着在下面同一份代码的两个版本中找出 bug:
答案: “wrong encoding” 和 “unauthorized” 错误被交换了. 在重构后的版本中,很容易发现这个错误, 因为在重构版本的检查中,被认为是错误的情况都被处理了。
上面所展示出的重构技术被称为保护条款 (guard clauses). 一个保护条款会检查一个判断标准, 如果标准未被满足, 那么它将会很快失败。它分离了计算逻辑 (computational logic) 与错误逻辑 (error logic). 通过消除在错误检查与捕获之间的认知鸿沟, 它释放了心理上的处理能力. 因此, 重构后的版本更具有可读性与维护性。
下面是一些在代码中减少嵌套的经验:
条件判断的代码块不要跨度太大,相隔太远. 通过就近处理各种情况来增加可读性.(It increases readability by keeping things local.)
当你的循环和分支超过 2 层时考虑重构.
考虑将嵌套的逻辑分为独立的函数。比如, 如果你在一个循环中对一些对象进行处理, 这其中的每个对象都包含一个列表 (比如一个有着重复字段的协议缓冲区), 那么你可以定义一个函数来处理这里面的每个对象,而不是使用一个两层的嵌套循环.
减少嵌套会带来更加可读的代码,让我们更加容易发现 bug, 加速开发迭代和增强稳定性。尽你所能去简化代码!
相关文章推荐
- [Code Health]减少嵌套,降低代码复杂度
- 减少代码嵌套
- 减少 if else 嵌套,提高代码的可读性
- 减少if语句的嵌套层次,提高代码的可读性
- 减少代码嵌套的方法
- 如何减少基于DataSet框架的代码输入量(二)
- PHP树的代码,可以嵌套任意层
- 如何减少基于DataSet框架的代码输入量(三)
- repeater的手写代码绑定,实现分页和嵌套
- GridView嵌套GridView 级联删除(1.纯代码删除版本)
- 贴个MyGenerator的NHibernate所需代码模板,降低些初学门槛!
- 某健康学校网站被植入传播Trojan-Downloader.Win32.Delf.bho的代码
- 如何用CodeSmith减少代码重复编写
- 用Object.watch减少代码复杂程度
- 软件的首要技术就是要降低复杂性
- 如何减少linux输入命令的复杂性
- 通过 ASP.NET 2.0 的数据增强功能来提高负载和减少代码 --作者:Dino Esposito
- J2EE开发中减少编写代码工作量的几种方法
- 一个可以解析嵌套IIF语句的代码
- datalist,repeater,datagrid嵌套问题,,解决代码,,总结