如果代码审查时你忘记了拿近视眼镜

标签: 批评评论 代码审查 | 发表时间:2014-07-15 00:33 | 作者:Aqee
出处:http://www.vaikan.com

你身处在一个卓越开明的开发团队,你被安排了一整天的时间,什么都不干,只做代码审查。然而,在活动开始两小时前,你发现自己把近视眼镜忘家里了,整个早上你看到的都是模糊的影像和颜色。你该怎么办?

正确的做法是,回家取你的眼镜,因为步行十分钟就能到家,然后今天会跟往常一样愉快的度过。但是,如果说,是你在早上准备离家上班时,发现一群凶猛好斗的大黄蜂在放眼镜的抽屉里筑起了蜂巢,挡住了你拿眼镜的途径,而且它们看起来很不喜欢被打搅。那你怎么办呢?

另一个正确的做法,很显然,是假装你带了隐形眼镜,免得让自己很尴尬。而且你知道自己有不看任何代码细节、只看大概就能说出很多让人钦佩的意见的能力。

代码审查 例一

ex1

我们都认可代码责任应该绝对的分离。任何类都应该只做它自己职责范围内的事情。但是,你的这个 UserCreator很可能有点过了。如果这个 UserCreator对象只做这一点事,那其实 Users 对象自己就应该创建自己。另外一点不好的是,创建一个简单的 Users,你还需要在成堆的小文件中找出它的创建者对象,不宜操作,也不宜理解。

代码审查 例二

ex2

看看这些一大堆的方法函数,却伪装成一个类,我可以看到,从技术上讲,这些方法都是在各自做自己的事情。虽然没有任何的文字信息提示或暗示,我也能猜出你没有很好的给这个类写测试程序。如果给我一杯浓咖啡、一个下午时间,我想我可以分析出中间这20行的代码是用来判断应该给哪个用户发送邮件,但我还是希望你将这部分代码放到 def users_to_send_emails_to函数里,免得我再去动脑子。

代码审查 例三

ex3

很好,在这个类里,你的方法都非常的简洁短小,这是一个进步。然而,你做的是有点过了。虽然Ruby解释器并不在意你的代码逻辑在每个只有一行的方法间来回跳跃,但人脑解释器会在意。也许有人会喜欢上下翻屏看代码,但如果换成我,让我在手臂上记下哪个方法应该调用哪个方法,那我更喜欢将这些小方法组合到一起。

代码审查 例四

ex4

可以看出,你非常关心这个类是否被放在了合适的命名空间里。非常好,使用命名空间是个好事。但在这个文件里,你嵌套了6层。看起来你试图在一个小小的地方里装下太多的东西。你要么应该想想不要分那么多层(是的,我可以看到这里有两个辅助类,应该放到它们自己的空间里,但如果把它放到其它地方会有不好吗?),要么拆分一些代码,放到自己的根空间下。

代码审查 例五

ex5

非常详细的注释,佩服!这段代码需要好几个章节的文字来辅助理解,佩服!

代码审查 例六

ex6

仔细看一下这第二个方法。如果一个方法需要8个参数才能让它知道干什么事情、如何干事情,那么,这个 方法有点太累了。请重构它,从它的肩膀上消减一些负担,拿走一些压力。把它一分为二(或更多),或者,也许将一些参数当成类的初始化参数,可能会更有意义些。这8个参数你会同时都用到吗?所以,不要期望你的方法这样。

所以,这就是当你忘了拿近视眼镜、或直视太阳太久时做代码审查的方法。如果你有丰富的编程经验,我相信你也能举出很多有趣的例子。有人可能会反对,说这些只是一些小事情,还有很多更重要的事情需求考虑。然而,清爽、简洁、良好格式的代码是你需要的,如果你不去用心控制好你的代码结构,它终究会给你带来烦恼。

请阅读全文: 如果代码审查时你忘记了拿近视眼镜

本文由 外刊IT评论网( www.vaikan.com)原创发表
文章地址: 如果代码审查时你忘记了拿近视眼镜
[英文原文: Code review without your glasses ]

你也许会喜欢这些文章:

  1. 事后诸葛亮:如何写出没有bug的软件
  2. 代码审查不是用来……
  3. 谷歌是如何做代码审查的
  4. 你们公司做代码审查吗?
  5. 代码审查和不良编程习惯




相关 [代码审查 忘记 近视眼] 推荐:

如果代码审查时你忘记了拿近视眼镜

- - 外刊IT评论
你身处在一个卓越开明的开发团队,你被安排了一整天的时间,什么都不干,只做代码审查. 然而,在活动开始两小时前,你发现自己把近视眼镜忘家里了,整个早上你看到的都是模糊的影像和颜色. 正确的做法是,回家取你的眼镜,因为步行十分钟就能到家,然后今天会跟往常一样愉快的度过. 但是,如果说,是你在早上准备离家上班时,发现一群凶猛好斗的大黄蜂在放眼镜的抽屉里筑起了蜂巢,挡住了你拿眼镜的途径,而且它们看起来很不喜欢被打搅.

代码审查过程

- - 博客园_知识库
   英文链接: Code Review Processes.   对我而言,把代码产品化而没有合适的审查流程,就像是一场抽抽乐游戏. 代码当然也有可能会挺好,不过总还是有一定概率某人的哪块积木没抽好,然后一切就轰然崩塌. 无论是采用持续集成服务、结对审查、QA审查,还是所有这些方案的组合,都可以大大降低引入风险的概率.

Google 是如何做代码审查的

- litefy - python.cn(jobs, news)
在上一篇文章中提到过,我已经不在Google工作了. 我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前. 因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西. Google是一个非常优秀的公司. 他们做出了很多令人称赞的东西—既是公司外部,人们可以看到的东西,也是公司内部.

代码审查中应该做的事

- China Moon - Solidot
威客 写道 "Mark Chu-Carroll从Google离职后,虽然已经收到了很多offer,但还没有决定去哪里. 他在其博客中分享了一些关于代码审查的趣事(中文). Google确实是一家很酷的公司. 不论是在公司内部或是外部,Google都做了很多让人赞叹的的事情. 这里我想介绍一些不涉及商业机密,但鲜为外人所知的事情.

敏捷代码审查指南

- - 博客 - 伯乐在线
“通过一次真正彻底地代码审查(code reviews),仔细阅读你的代码,找出问题,这是我知道的最好的方式去检测早期的bug,但是他们很少去这样干过. 某种意义上是因为他们花了大量的时间去写好代码,但是我认为主要是因为绝大部分 程序员害怕其他人审查自己的代码. 作为专业的程序员我们要克服阻力,如果你不愿意别人阅读你的代码,然后只是按照自己的意愿写,如果其他人没法读懂它,又怎能让别人使用呢.

代码审查(Code Review)清单

- - 博客 - 伯乐在线
代码审查可以帮助提高代码质量,避免由于代码习惯而造成的 bug. 下面列出的这些要点因该可以作为大部分代码审查的指导,如果是 Java 应用的话,这些建议应该被视作最佳实践. Javadoc 应该在每一个类和方法中添加. 如果是修复某个 bug,应该添加 bug ID. 走捷径的方法或者复杂的逻辑要有解释.

我所钟爱的代码审查

- - 译言-电脑/网络/数码科技
This is pretty standard fare for developers in the "real world", but I have never heard of an academic research group using them, and had never done code reviews myself before joining Google..

代码审查不是用来……

- - 外刊IT评论
提示:如果您在阅读器里点击订阅本站的文章链接时发现有一个中转页,这说明你的订阅地址有误,本站的订阅地址(RSS)是:. http://www.aqee.net/feed/,请及时纠正. 事实上,今天的我们正是从这种一直坚持探索的漫长道路上走出来的. 我们尝试各种技术、方法和工具,直到我们走到今天的成就(但这并不是说我们就此停步).

我们如何进行代码审查

- - CSDN博客研发管理推荐文章
本文来源于我在InfoQ中文站原创的文章,原文地址是:. Jim Bird是一位经验丰富的软件开发经理、项目经理与CTO,专注于软件开发与维护、软件质量与安全等领域中疑难问题的解决. 在过去的15年间,Jim曾管理过团队建设并主导过高性能的财务系统的建设. 他的主要兴趣在于如何提升小团队的效率以构建真正的软件:高质量、安全、可靠、高性能及适应性强.

你们公司做代码审查吗?

- - 外刊IT评论
每当从各种公司听到他们正在尝试自动化部署/测试的事情,我都非常关注,但通常会很吃惊,他们很少会考虑去实行代码审查制度. 看到这种情况,我通常想问: 如果代码没有经过其它人的审查,你如何知道你要测试的是什么. 这答案(如果有的话)通常是捏着手指头说 有几个人在做代码审查或“正在考虑中”. 不论你采用什么形式的测试过程,什么形式的部署过程,没有代码审查——game over.