浅谈CodeReview

什么是CodeReview

CodeReview就是我们说的代码评审,指在软件开发过程中,对源代码的系统性检查。通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平。 Code Review是轻量级代码评审,相对于正式代码评审,轻量级代码评审所需要的各种成本要明显低的多,如果流程正确,它可以起到更加积极的效果。正因如此,轻量级代码评审经常性得被引入到软件开发过程中。

Why we do Code Review(为什么进行)

1、提高质量
2、及早发现潜在缺陷与BUG,降低事故成本。
3、促进团队内部知识共享,提高团队整体水平
4、评审过程对于评审人员来说,也是一种思路重构的过程。帮助更多的人理解系统

从代码审查里能得到什么?

在代码提交前,用第二群眼睛检查一遍,防止 bug 混入。

代码审查的最大的功用是纯社会性的。如果你在编程,而且知道将会有同事检查你的代码,你编程态度就完全不一样了。你写出的代码将更加整洁,有更好的注释,更好的程序结构——因为你知道,那个你很在意的人将会查看你的程序。

代码审查能传播知识。在很多的开发团队里,经常每一个人负责一个核心模块,每个人都只关注他自己的那个模块。除非是同事的模块影响了自己的程序,他们从不相互交流。

进行CodeReview应该遵循哪些基本规则?

(1)需要对CodeReview形成一致的认识,如果在对该事物的认识上存在分歧,那么会增加CodeReview工作的难度;

(2)需要对基本的编码规范形成一致性的认知,即形成统一的代码规范;

(3)CodeReview必须在代码CheckIn之前完成;

(4)CodeReview应从设计到编码逻辑进行细致的review,故需要参与成员的紧密沟通合作;

(5)必须准确记录CodeReview过程中发现的问题,可以使用问题点记录单;

(6)Review过程中可以要求作者讲解,遇到不清楚的逻辑点要处分提问讨论;

(7)要形成讨论问题、解决问题的气氛,不能把CodeReview搞成批判大会;

(8)Code的作者应对Code质量负责;

(9)引导轻量Review:如果一次性Review issue过多,会严重影响Review的质量;

关于CodeReview的一些原则

架构/设计/常规
1.单一职责原则
一个类只能干一个事情,一个方法最好也只干一件事情。比较常见的违背是一个类既干UI的事情,又干逻辑的事情,这个在低质量的客户端代码里很常见。

2.行为是否统一
例如:
1)缓存是否统一
2)错误处理是否统一
3)错误提示是否统一
4)弹出框是否统一

3.代码污染
代码有没有对其他模块强耦合

4.重复代码–>应该抽取

5.开闭原则

6.面向接口编程

7.健壮性
1)是否考虑线程安全
2)数据访问是否一致性
3)边界处理是否完整
4)逻辑是否健壮
5)是否有内存泄漏
6)有没有循环依赖
7)有没有野指针
8)是否检查了数组的“越界“错误

8.错误处理

9.改动是不是对代码的提升
新的改动是打补丁,让代码质量继续恶化,还是对代码质量做了修复

10.效率/性能
1)关键算法的时间复杂度多少?有没有可能有潜在的性能瓶颈
2)客户端程序对频繁消息和较大数据等耗时操作是否处理得当

代码编码规范

是否有编码规范的意识?
开发一个项目,若如果从开始编写第一行代码,大家就有代码规范的意识,确属难能可贵。但大多数情况,很多原因导致我们没有将此作为一项重要的原则开始。原因也大概无非以下几类:

时间原因:项目开发时间紧迫,根本无法预期项目的进度,还是抓紧时间先实现功能再说
软件原因:项目开发使用的框架,第三方库各自有各自的编码风格
个人原因:每个人也有自己的编码习惯,一时间很难保持统一
公司原因:公司对编码要求、编码审核没有强制执行,没有专人负责,编码规范形同虚设,完全靠自觉,压根没谱
其他:这个很多时候,也有个人怕麻烦、懒啊、等等原因,总之,没能达到这要求,找借口一找一箩筐啊。
选择什么样的规范作为标准呢?
这个主要根据编程语言的不同。不同编程语言有自己独特的特点,C++、Java、javaScript、Python等,语法规则相差很大,风格自然不同。对于不同变成语言,好多知名IT公司都有自己的编码规范,我们可以以此为参考。

3.统一编程规范的意义有那些?
编程规范的形成,主要是为了团队之间更方便地代码阅读和交流为主要目的,同时也更容易从中分析代码错误。既然是为了别人阅读和交流,那就要更加通用和一致,这样才能有利于交流。 好多不注重规范的程序员写代码,都没有考虑代码最后给其他人看。所以写代码也相当随意。命名、注释、对齐,等等,完全随意。结果呢,几个星期过后,自己开自己代码都看不懂了,更别提给别人看。

代码风格很重要!(直接决定阅读者说过出几个f*ck)

1.可读性

2.命名

3.函数长度/类长度

4.注释

5.参数个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值