[Code Health]减少嵌套,降低代码复杂度
2018-01-09 20:26
218 查看
原文标题:Code Health: Reduce Nesting, Reduce Complexity
发布日期:美国时间2017-06-05
发布渠道:Google Testing Blog
文章作者:Elliott Karpilovsky
文章译者:袁伟
特别提示:点击底部阅读原文可跳转至原文链接
这是我们代码健康系列的另一篇文章。这篇文章的一个版本最初出现在世界各地的谷歌浴室,作为一个谷歌的厕所事件测试。你可以下载一个友好的版本在你的办公室显示。
—— Elliott Karpilovsky
深度嵌套的代码会大大降低代码可读性,并且容易出错。
请尝试在以下两个版本的代码中发现错误:
答案揭晓:
代码中输出
上面绿色区域的重构技术称为保护语句。一条保护语句只检查一个异常逻辑,如果条件没有满足,就能立即反馈当前程序出现的问题。最终实现将计算逻辑与错误逻辑分离开来。当我们在阅读逻辑分离后的代码结构时,思维也会立即转变为错误处理语句块和正常计算处理语句块,对比之前的
以下准则能帮助你在代码中尽量减少嵌套:
1. 条件语句块尽量的简短。
2. 当循环和分支超过两层时,考虑重构。
3. 将嵌套逻辑移动到单独的函数中。例如,如果您需要遍历每个包含列表的对象列表(例如带有重复字段的协议缓冲区),则可以定义一个函数来处理每个对象,而不是使用双重嵌套循环。
减少嵌套会让代码可读性更好,同时也能更容易的找出bug,开发人员可以更快的迭代,程序也会越来越稳定。
简化代码,让编程更轻松!
原文地址
发布日期:美国时间2017-06-05
发布渠道:Google Testing Blog
文章作者:Elliott Karpilovsky
文章译者:袁伟
特别提示:点击底部阅读原文可跳转至原文链接
这是我们代码健康系列的另一篇文章。这篇文章的一个版本最初出现在世界各地的谷歌浴室,作为一个谷歌的厕所事件测试。你可以下载一个友好的版本在你的办公室显示。
—— Elliott Karpilovsky
深度嵌套的代码会大大降低代码可读性,并且容易出错。
请尝试在以下两个版本的代码中发现错误:
答案揭晓:
代码中输出
wrong encoding和
unauthorized错误信息的语句所对应的判断条件发生混淆,实际应该调换一下判断条件。这个bug在上图中蓝色区域的代码版本中需要层层抽丝剥茧才能发现,而在绿色区域的重构版本中能更容易的发现。
上面绿色区域的重构技术称为保护语句。一条保护语句只检查一个异常逻辑,如果条件没有满足,就能立即反馈当前程序出现的问题。最终实现将计算逻辑与错误逻辑分离开来。当我们在阅读逻辑分离后的代码结构时,思维也会立即转变为错误处理语句块和正常计算处理语句块,对比之前的
if-else四重嵌套结构,重构版本更易于阅读和维护。
以下准则能帮助你在代码中尽量减少嵌套:
1. 条件语句块尽量的简短。
2. 当循环和分支超过两层时,考虑重构。
3. 将嵌套逻辑移动到单独的函数中。例如,如果您需要遍历每个包含列表的对象列表(例如带有重复字段的协议缓冲区),则可以定义一个函数来处理每个对象,而不是使用双重嵌套循环。
减少嵌套会让代码可读性更好,同时也能更容易的找出bug,开发人员可以更快的迭代,程序也会越来越稳定。
简化代码,让编程更轻松!
原文地址
相关文章推荐
- 代码健康: 减少嵌套, 降低复杂性
- 降低代码的复杂度
- 【第1076期】 如何无痛降低 if else 面条代码复杂度
- 减少代码嵌套
- 减少 if else 嵌套,提高代码的可读性
- 减少代码嵌套的方法
- 减少if语句的嵌套层次,提高代码的可读性
- 写高质量OC代码52建议总结:39.用handler块降低代码分散程度
- [c]C语言提高效率和减少代码size的方法
- 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
- J2EE开发中减少编写代码工作量的几种方法
- UI组件设计:减少冗余代码--类继承关系的考量
- 降低时间复杂度的几种方法【持续更新】
- Thread-使用同步块来有效的减少同步范围,可以提高代码并发运行的效率。
- CPLD/FPGA/Verilog_如何写代码减少逻辑单元的使用数量
- Android代码学习-嵌套类,嵌套接口,匿名类,接口引用,子类调用父类的方法
- [iOS]APP代码实践:建立一个辅助的APP类,减少对AppDelegate的修改
- 一个坑爹的问题:jsp中在js函数中嵌套java代码造成的问题
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
- 减少C++代码编译时间的方法