快速业务通道

[观点]减少代码嵌套

作者 佚名技术 来源 互联网 浏览 发布时间 2012-01-13

“这家伙的代码太差劲了!”当我们遇到我们不喜欢的代码时常常这么说或是这么想。有时候时因为代码有很多bug,有时候是因为不喜欢它的代码风格,而有时候仅仅只是因为感觉不舒服。最近我仔细想了想,然后突然意识到或许是因为开发者是个新手。这些代码有个明显不招人喜欢的地方:太多的嵌套。当我思考的越多,我越来越意识到,这不是那些我们以前经常讨论的事情。

那现在让我们讨论讨论这个吧。我首先想说的是什么叫代码嵌套,为什么会影响代码的质量。然后我将用这些年学的一些技巧来减少嵌套。

什么是代码嵌套,为什么嵌套是不好的?

演示比空口而谈更为容易。很抱歉用下面这个不自然的例子来解释什么是深层的代码嵌套。

减少代码嵌套

你仅仅从每行的缩进中就可以看到这段巨大的代码有多少嵌套。在我们最终判断“用户不能被找到”前,我们必须穿过4个条件语句,而且每个条件句都嵌套在先决条件句中。

我觉得这是一段糟糕的代码。每个额外嵌套的内容大脑都必须另外记录。每一个嵌套的块你都得关注它是和哪个条件句关联的(即使你的编辑器能帮助你,但是却不能彻底的解决这个问题)。这仅仅是一个最后返回user的简单直观的例子,让我们看一个复杂点的例子:

减少代码嵌套

对我来说,即使只是写这个例子都显得非常的难。这很明显不自然或者别的什么,但是关键是弄懂它在实现什么都很难。不像之前的例子,这个不是简单的嵌套然后返回;它嵌套然后不嵌套,然后又嵌套,最后返回结果。

怎么避免代码嵌套

我发现最好的避免代码嵌套的方法就是尽早返回结果。缓存对这来说是一个很好的例子。与其测试缓存是否失败然后在条件句中再从数据库获取信息,不如判断缓存是否成功然后尽早的返回结果。

代码如下:

减少代码嵌套

在这个简单的例子中,好像没有改进多少,但是如果将这个技巧运用到第一个例子中会发生什么?它将显著的得到改进:

 减少代码嵌套

这不仅使代码阅读起来简单,使我们少关注一些上下文的联系,让代码编辑器少做些自动换行的工作,而且使代码容易分块并更容易进行注释。

那我们还能使用哪些别的技巧来避免代码嵌套呢?这更多的取决于具体情况。你写一大堆回调函数的时候是不是也容易嵌套?如果是,你通常可以重构你的代码,多用命名函数而不是匿名函数。下面是重构前的效果:

减少代码嵌套

在第一个回调函数中,我们运用了早点返回结果的技巧,但是就如你看到的一样还是有很多嵌套。现在如果我们转为使用命名函数会怎样呢?

减少代码嵌套

这在嵌套方面得到了明显改善。不幸的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号