如何进行CodeReview
一、代码规范的要点
代码规范主要分为风格规范与设计规范两大类:
1、代码风格规范
主要是文字上的规定,看似表面文章,实际上非常重要。
具体有如下几个方面:
(1)缩进
(2)行宽
(3)断行/空白行
(4)括号
(5)命名(字母、下划线、大小写)
(6)注释
A、单行注释
B、多行注释
C、变量/方法/类/包注释
2、代码设计规范
牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。
主要有如下几个方面:
(1)方法/函数的写法
A、方法命名
B、方法参数(入参/返回值)
C、方法的职责
比如:避免out型参数、用枚举替代boolean、同类型参数最好间隔开、超过4个参数最好抽象成一个类、参数和返回值最好不传null、用卫述句减少if嵌套、方法连续调用要注意空指针、for循环优于while
(2)异常处理原则
比如:异常的抽象层次应该与方法所在的层次一致,业务层方法要对底层异常进行转译为业务异常
(3)分层/类设计原则
比如:在某一个层进行防御式校验,某一层按约定不做参数校验;比如调用到的外部接口封装为facade防腐层;
(4)单测原则
比如:快速/及时、独立、可重复、覆盖主要代码路径、无副作用
二、CodeReview注意事项
主要根据团队设定的代码规范,来review团队成员的代码,大致有以下几个方面:
1、代码有没有不符合代码规范的
比如:命名、注释
2、代码有没有(业务/算法)逻辑错误
比如:功能与需求有偏差;参数传递顺序出错;方法的边界条件有没有考虑等
3、代码有没有回归错误
比如:之前的功能回归测试不通过
4、代码有没有潜在性能问题
比如:考虑大数据量、大并发量下的性能下sql是否有问题?是否会有内存泄露?死锁等
5、代码有没有其他待改进的地方
比如:可扩展性/过度设计
——参考《构建之法》
作者:go4it
链接:https://www.jianshu.com/p/e65d83405914
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如何进行CodeReview的更多相关文章
- 【腾讯Bugly干货分享】让 CodeReview 这股清流再飞一会儿
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/ToYeT4Y4pzx0ii9Z92fo-Q 作者:刘 ...
- CodeReview Learning
目录 . 引言 . 代码检视的指导思想 . 代码检视的内容 . 回归测试 0. 引言 代码检视(Code Review)是指软件开发人员在完成代码设计.编写.调试后展开的个人或群体性的代码阅读过程,代 ...
- 分享总结:更好地CodeReview
代码质量分享 2016_06_24_舒琴_代码质量.key For 代码提交人 基本原则 Review时机: 对于普通bugfix或优化,CodeReview最迟要 ...
- codereview介绍
1. 定义: Code review is systematic examination (often known as peer review) of computer source code. I ...
- 关于CodeReview(java)(转)
关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来. 为什么要做 通过review规避一些代码层面的问题 提升可读性,方便后续 ...
- 自动化CodeReview - ASP.NET Core请求参数验证
自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 参数验证实现 在做服务端开发 ...
- 自动化CodeReview - ASP.NET Core依赖注入
自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 我个人比较懒,能自动做的事绝 ...
- CodeReview实践与总结
CodeReview 是大型软件工程中公认的必不可少的保证工程质量的重要手段之一.但凡正规软件作战军团都是非常重视 CodeReview 的作用和意义的.那么,如何做好 CodeReview 呢?这里 ...
- CodeReview常见代码问题
路线图 常见代码问题空值未捕获潜在的异常低性能影响范围过大单测问题与原有业务逻辑不兼容缺乏必要日志错误码不符合规范参数检测缺乏或不足引用错误细节错误多重条件文不符实跨语言或跨系统交互可维护性问题硬编码 ...
随机推荐
- Java中break和continue跳出指定循环
https://www.cnblogs.com/miys/p/b7f6a463bc58785d74a8a7fccd1f1243.html 在Java中,break和continue可以跳出指定循环,在 ...
- 芯灵思SinA33开发板怎样安装虚拟机
芯灵思SinA33开发板怎样安装虚拟机 今天入手一块芯灵思的开发板,型号为SIN-A33,用的是全志的A33芯片,与其它开发板不同的是, 芯灵思开发板手册上用来搭建开发环境的linux系统是cento ...
- zabbix入门之使用QQ邮箱接受报警信息
首先说明我使用的是3.2版本的zabbix 既然要发邮件到QQ邮箱报警,那么在centos7上就肯定需要安装发送邮件的软件了 安装应用yum install mailx sendmail -y接着修改 ...
- Dynamic Code Evolution for Java dcevm 原理
在hostswap dcevm中我们对Dynamic Code Evolution VM有了一个简单的了解,这篇文章将介绍Dynamic Code Evolution VM的实现原理. 有两个概念需要 ...
- openresty 一些可选的模板引擎
以下为一些 openresty 可选的模板引擎,方便使用 lemplate (https://github.com/openresty/lemplate) lua-resty-tags (https: ...
- Unity Shader 入门精要学习 (冯乐乐 著)
第1篇 基础篇 第1章 欢迎来到Shader的世界 第2章 渲染流水线 第3章 Unity Shader 基础 第4章 学习Shader所需的数学基础 第2篇 初级篇 第5章 开始Unity Shad ...
- centos6 下 yum 升级php5 到 php7
一 [卸载老版本php] 1.查看老版本 2.卸载老版本 yum remove php* 本人使用一下方式卸载老版本 1)yum -y remove php* #这个命令可以卸载部分,但是清除不干净 ...
- JMeter - Perfmon - ServerAgent
−Table of Contents 1 - Installation 2 - Usage and commands 2.1 - PerfMon Metrics Collector Listener ...
- Linux paste命令详解
Linux paste命令 Linux paste命令用于合并文件的列.paste指令会把每个文件以列对列的方式,一列列地加以合并 将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分 ...
- sparkSQL以JDBC为数据源
一.环境准备 安装oracle后,创建测试表.数据: create table test ( username varchar2(32) primary key , password varchar2 ...