我所了解Code Review

代码有这几种级别:1,可编译;2,可运行;3,可测试;4,可读;5,可维护;6,可重用。

通过自动化测试的代码只能达到第3层次,而通过code Review的代码可以上升到更高的层次。

如何进行Code Review?

我一直不认为programmer只是埋头Code,靠自己的大脑就能运行所有的Code,一个团队所有人都是这样的工作,那没有什么比这还要糟糕了。

多沟通,多交流,在一个团队是很必要的。

多问问题。 “这块儿是怎么工作的?” “这个问题,你这个怎么处理的?”

多当面讨论。 小组内的同事是坐在一起的,找个好的轻松时间,face to face的 code review是非常有效的。

区分重点,不要舍本逐末。 优先抓住 设计,可读性,健壮性等重点问题。


Code Review的意识

作为一个Developer , 不仅要Deliver working code, 还要Deliver maintainable code.

必要时进行重构,随着项目的迭代,在计划新增功能的同时,开发要主动计划重构的工作项。

开放的心态,虚心接受大家的Review Comments。

在Code Review中,检查清单是一个非常好的工具—它们保证了审查可以在你的团队中始终如一的进行。


Code Review清单

常规项


代码能够工作么?它有没有实现预期的功能,逻辑是否正确等。


所有的代码是否简单易懂?


代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。


是否存在多余的或是重复的代码?


代码是否尽可能的模块化了?


是否有可以被替换的全局变量?


是否有被注释掉的代码?


循环是否设置了长度和正确的终止条件?


是否有可以被库函数替代的代码?


是否有可以删除的日志或调试代码?

安全


所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?


在哪里使用了第三方工具,返回的错误是否被捕获?


输出的值是否进行了检查并且编码?


无效的参数值是否能够处理?

文档


是否有注释,并且描述了代码的意图?


所有的函数都有注释吗?


对非常规行为和边界情况处理是否有描述?


第三方库的使用和函数是否有文档?


数据结构和计量单位是否进行了解释?


是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’?

测试


代码是否可以测试?比如,不要添加太多的或是隐藏的依赖关系,不能够初始化对象,测试框架可以使用方法等。


是否存在测试,它们是否可以被理解?比如,至少达到你满意的代码覆盖(code coverage)。


单元测试是否真正的测试了代码是否可以完成预期的功能?


是否检查了数组的“越界“错误?


是否有可以被已经存在的API所替代的测试代码?


你同样需要把特定语言中有可能引起错误的问题添加到清单中。


这个清单故意没有详尽的列出所有可能会发生的错误。你不希望你的清单是这样的,太长了以至于从来没人会去用它。仅仅包含常见的问题会比较好。


优化你的清单

把使用清单作为你的起点,针对特定的使用案例,你需要对其进行优化。一个比较棒的方式就是让你的团队记录下那些在代码审查过程中临时发现的问题,有了这些数据,你就能够确定你的团队常犯的错误,然后你就可以量身定制一个审查清单。确保你删除了那些没有出现过的错误。

得到认可并且保持更新



要定期检查你的清单,以确保各条目仍然是有意义的。


有了一个好的清单,可以提高你在代码审查过程中发现的缺陷个数。这可以帮助你提高代码标准,避免质量参差不齐的代码审查。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 目录0x10 概述0x20 我的应用环境0x30 路线图0x40 安装0x41 LNMP环境的安装0x42 Pha...
    zhangweiheb阅读 59,385评论 36 62
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,101评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • [cp]在一个不熟悉的地方简直就跟傻子样!打个车,不用滴滴打车,即使空车也不停!坐个火车一路喊啊去站台简直就像喊魂...
    靖哥哥家的黄蓉阅读 196评论 0 0
  • 再一次来到黄旗山观音庙,这一次来的心情很陈杂。以往每次来到这个心灵的净土回去的时候我总是能够得到内心的平...
    一周感悟阅读 371评论 0 1