您的位置:首页 > 编程语言

[Code Health]减少嵌套,降低代码复杂度

2018-01-09 20:26 218 查看
原文标题:Code Health: Reduce Nesting, Reduce Complexity

发布日期:美国时间2017-06-05

发布渠道:Google Testing Blog

文章作者:Elliott Karpilovsky

文章译者:袁伟

特别提示:点击底部阅读原文可跳转至原文链接

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

—— Elliott Karpilovsky

深度嵌套的代码会大大降低代码可读性,并且容易出错。

请尝试在以下两个版本的代码中发现错误:



答案揭晓:

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

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

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

1. 条件语句块尽量的简短。

2. 当循环和分支超过两层时,考虑重构。

3. 将嵌套逻辑移动到单独的函数中。例如,如果您需要遍历每个包含列表的对象列表(例如带有重复字段的协议缓冲区),则可以定义一个函数来处理每个对象,而不是使用双重嵌套循环。

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

简化代码,让编程更轻松!

原文地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  谷歌 编码 测试