Code Review是什么?
Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。
Code Review主要用来在软件工程过程中改进代码质量,通过Code Review可以达到, 在项目早期就能够发现代码中的BUG。
Code Review 主要 Revivew 什么?
代码设计/构思方面:
1、单一职责原则(SRP)
这是经常被违背的原则。一个类只能干一个事情 , 一个方法最好也只干一件事情。 比较常见的违背是一个类既干 UI 的事情,又干逻辑的事情 , 这个在低质量的客户端代码里很常见。
2、行为是否统一
1.比如缓存是否统一,错误处理是否统一, 错误提示是否统一, 弹出框是否统一 等等。
2.同一逻辑 / 同一行为 有没有走同一 Code Path?
3、代码污染
代码有没有对其他模块强耦合 ?
4、重复代码
主要看有没有把公用组件,可复用的代码,函数抽取出来。
5、开放封闭原则(OCP)
就是好不好扩展。 Open for extension, closed for modification.
6、接口隔离原则(ISP)
使用多个隔离的接口,比使用单个接口要好。
7、面向接口编程 和 不是 面向实现编程
主要就是看有没有进行合适的抽象, 把一些行为抽象为接口。
8、健壮性
1.对 Corner case 有没有考虑完整,逻辑是否健壮?有没有潜在的 bug?
2.有没有内存泄漏?有没有循环依赖 ?(针对特定语言,比如 Objective-C) ?有没有野指针?
3.有没有考虑线程安全性, 数据访问的一致性
9、错误处理
有没有很好的 Error Handling?比如网络出错,IO 出错。
10、改动是不是对代码的提升
新的改动是让代码质量继续恶化,还是对代码质量做了修复?
11、效率 / 性能
1.客户端程序 对频繁消息 和较大数据等耗时操作是否处理得当。
2.关键算法的时间复杂度多少?有没有可能有潜在的性能瓶颈。
12、可读性 / 可维护性
1.字段、变量、参数、方法、类的命名是否合理。
2.字段、变量、参数、方法、类的注释是否完整。
如何进行Code Review?
1.多问问题。多问 “这块儿是怎么工作的?” “如果有 XXX case,你这个怎么处理?”
2.每次提交的代码不要太多,最好不要超过 1000 行,否则 review 起来效率会非常低。
3.当面讨论代替 Comments。 大部分情况下小组内的同事是坐在一起的,face to face 的 code review 是非常有效的。
4.区分重点,不要舍本逐末。 优先抓住设计,可读性,健壮性等重点问题。
Code Review应该注意什么?
1.作为审查者:代码审查是一种学习,是表扬,是获得反馈,是一种十分社交性的活动。代码审查应该是有趣的,不要让它变的无聊。
2.作为开发人员:代码审查是针对代码,不是针对你。不要把代码审查当成互相讽刺的论坛和相互批判的工具。反而,代码审查是提高你的一种路径。