阅读材料二:代码复审>不要重复你自己
不要重复你自己
原文地址:https://courses.edx.org/courses/course-v1:MITx+6.005.1x+3T2016/courseware/Readings_Videos/02-Code-Review/
代码复审
代码复审是不是代码原作者的人仔细,系统地学习源代码的过程.这和校正学术论文很类似.
代码复审实际上有两个目的:
- 提高代码质量.发现bug,预测可能的bug,检查代码的简洁性,和检查与项目风格标准的一致性.
- 提升程序员.代码复审是程序员学习和教别人的一个重要的方式,关于新的语言特性,项目设计或者其代码标准的改变,和新科技.特定地在开源项目中交流发生在代码复审中.
代码复审在开源项目如Apache和Mozilla中被广泛运用.代码复审在业界也普遍被采用.在谷歌,你甚至不能提交任何代码到主目录除非其他程序员已经在代码复审中赞同了.
风格标准
大部分公司和大型项目有代码风格标准(例如,谷歌Java风格).这些可以非常细化,甚至细化空格的点(如何缩进)和中括号和圆括号写在哪里.这类问题经常引向圣战因为他们最终会形成一种风格和品位.
在6.005,我们这类的官方风格指南.我们不会告诉你哪里放你的括号.这是每个程序员应该做的个人决策.自我一致性很重要,然后跟随你项目的的传统也是非常重要的.如果你是一个把每个模块都重新整理以符合自己的代码风格的程序员,你的队友会恨你的,这样做就对了.成为一个团队型选手.
但是这里有些规则非常有意义,同时目标是我们的三大特性,以一种比放括号更强大的方式.剩下的阅读材料谈到了这些规则,至少是和本门课程的关键点相关的规则,这里我们普遍谈到的是写基本的Java.这是我们将要在阅读材料中谈到的规则的总结:
- 不要重复你自己.
- 在需要处注释.
- 快速失败.
- 避免魔法数字.
- 每个变量只有一个目标.
- 用好的命名.
- 避免全局变量.
- 放回值而不是打印它们.
- 为了可读性用空格.
这些是你在复审别人的代码时应该开始注意的和你在写自己的代码时应该要注意提高的.然而别把它当做代码风格指南的详尽列表.这学期的课程后面,我们将谈到更多的事情--说明,抽象数据类型和重现不变性,并发性以及线程安全--这些将成为代码复审的素材.
嗅觉例子#1
程序员经常将糟糕的需要移除的代码描述成一种糟糕的气味.代码卫生是另一种描述方法.让我们开始闻一闻代码.
代码1在下面的一些片段和练习中我们将挑出这段代码的特殊气味.
不要重复你自己
重复的代码对于安全性是一种风险.如果你有一个完全相同或者非常类似的代码在两个地方,接下来潜在的风险是这两处地方都存在一个bug,结果维护者在一处发现了bug却没有在另一处发现.
避免副本就像你避免过马路不注意观察.复制粘贴是一种非常临时的编程工具,而且你应该在你每次用它时体会到到撞到你脊柱般危险的颤抖.你复制粘贴的代码越长,风险越大.
不要重复你自己,DRY是其缩写,已经成了程序员的咒语.
这个dayOfYear的例子是一个充满了同一性的代码.你如何做到Dry呢?