文档章节

关于CodeReView(代码审查)

莫库什勒
 莫库什勒
发布于 2017/02/06 10:23
字数 926
阅读 19
收藏 0

为什么要做

  • 通过review规避一些代码层面的问题
  • 提升可读性,方便后续扩展和维护
  • double check 确保代码质量

检查列表

注释

  • 写有意义的注释
  • DO属性上,名字无法识别业务含义的,加注释
  • service接口和manager接口,注明方法的说明
  • 代码块中的复杂逻辑,添加注释

风格

  • 域名不要写死
  • 不同环境下差异的,注意使用配置项

日志

  • 合理分配日志级别,warn和error要分开
  • 日志中,异常信息要记录,第一个参数简短说明,第二个异常信息
  • 日志异常注意把相关的参数信息记录下来,例如userId等
  • 异常抛日志的情况下,主要不要引入二次异常
  • 配置参数

线程安全

  • 需要被多个线程访问的对象是否线程安全,检查有无通过同步方法保护
  • 在保证线程安全的同时,要注意避免过度使用同步,导致性能降低
  • 不用使用Java原生的线程处理方法,推荐使用JUC框架中的类
  • 根据场景选择不用的线程池来实现,会用简化版Executors,理解处理过程

异常处理

  • 不要直接e.printStackTrace,用Logger记录下来
  • 异常捕获之后,要做响应的处理,返回错误提示或者记录日志,切忌啥都不做
  • 当前程序中能够处理的异常,捕获即可,无法处理的,抛出
  • 异常只为异常服务,不要掺杂业务逻辑到异常中

性能

  • 避免多重的RPC或者网络IO的循环,尽量批处理
  • 避免无穷循环,要有终止条件判断
  • 不要主动进行垃圾回收,代码中不要有System.gc()
  • String的split方法不要用,用开源包中的StringUtil工具类
  • 字符串的拼接,使用StringBuilder和StringBuffer

代码逻辑

  • 不要在finally中return(try中的返回值,屏蔽异常)
  • volatile不具有原子性,划分好synchronized的粒度问题
  • 推荐使用Guava作为工具处理类
  • 推荐joda来处理时间,然后SimpleDateFormat是非线程安全的
  • 单个方法超过50行,要做抽取,否则无法保证可读性
  • 方法入参超过5个,抽取到QueryTO中进行处理
  • for或if的层级嵌套,不要超过4层
  • if的逻辑判断中,多个||和&&的组合,注意拆分处理
  • case语句后面,需要加break
  • if后面,记得写大括号
  • 文件资源,访问后,记得close掉
  • 排序优先使用Comparator,一个类的扩展排序工具
  • 使用addAll、retainAll、removeAll优雅实现并集、交集、差集
  • List的remove,使用迭代器来进行删除

事务处理

  • 多表同时更新操作,需要事务包裹,并验证过
  • 批量插入,使用iBatis的batchInsert特性,需要在事务下才生效,可以通过wireshark查看网络情况
  • 分布式场景下,可以使用消息中间件来保证最终一致性
  • 声明式事务注解标签,尽量在manager层搞掉,不要搞到service层或者web层
  • 一些可能出现重复处理的方法,记得做幂等操作

重复代码

  • don’t repeat yourself
  • 同样的业务逻辑处理,不要有两份代码

安全问题

XSS

  • cookie设置httponly属性
  • jsonp输入输出检查

CSRF

  • 服务端增加CSRF校验,增加token
  • 必要的验证码

水平权限

  • 不用用户之间的不能相互操作

标准

  • 代码整洁
  • 可读性好
  • 可维护性高
  • 性能优

本文转载自:http://iamzhongyong.iteye.com/blog/2149463

莫库什勒

莫库什勒

粉丝 23
博文 184
码字总数 76672
作品 0
杭州
高级程序员
私信 提问
让 Code Review成为一种习惯

开篇 5月份的时候突然接到 code.oa.com【腾讯内部的一个代码管理平台】 的 summer 的通知, 说广点通的codereview 参与度在公司各部门中表现出色,而我们小组(广点通广告定向小组)的 code...

niithub
2018/08/13
87
0
Apache+SVN+Review Board代码审核服务器搭建流程

Apache+SVN+Review Board代码审核服务器搭建流程 一、简介 代码审查(CodeReview)不但可以提高质量,而且还是一个知识共享和指导的极好的手段。ReviewBoard是一款比较优秀的,开源的基于WEB...

四京
2017/05/26
0
0
17款最佳的代码审查工具

1)CodeStriker CodeStriker是一个免费&开源的Web应用程序,可以帮助开发人员基于Web的代码审查。它不但允许开发人员将问题、意见和决定记录在数据库中,还为实际执行代码审查提供了一个舒适...

zqwang121
2016/04/19
266
1
17款最佳的代码审查工具

好的代码审查器可以大大地帮助程序员提高代码质量,减少错误几率。 虽然现在市场上有许多可用的代码审查工具,但如何挑选也是一个艰巨的任务。在咨询过有关专家的建议和意见之后,我们罗列出...

丫丫的
2016/02/23
967
0
【腾讯Bugly干货分享】让 CodeReview 这股清流再飞一会儿

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/ToYeT4Y4pzx0ii9Z92fo-Q 作者:刘永丽 导语 精神哥最近和团队中的开发同学聊天,...

腾讯Bugly
2016/12/12
75
0

没有更多内容

加载失败,请刷新页面

加载更多

log4j起不来: No appenders could be found for logger

在mvn test时,log4j一起起不来,log message打不出来 原因: log4j.properties 文件没不存在,或存在,但放错路径 解:把log4j.properties放入mvn 默认的resources跑路径下面:./src/main/...

Rebecca_Hu
30分钟前
5
0
ETH 开发工作记录

测试是否连接成功 String web3ClientVersion = web3j.web3ClientVersion().send().getWeb3ClientVersion(); log.info("version=" + web3ClientVersion);...

xiaodong16
32分钟前
3
0
ntpserver配置

# For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift # Permit ti......

Archer99
38分钟前
3
0
技术分享 | delete 语句引发大量 sql 被 kill 问题分析

作者:王航威 有赞 MySQL DBA,擅长分析和解决数据库的性能问题,利用自动化工具解决日常需求。 现象 某个数据库经常在某个时间点比如凌晨 2 点或者白天某些时间段发出如下报警 [Critical][p...

爱可生
43分钟前
5
0
Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置

Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能。通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘、内存、CPU等信息,系统的线程...

朝雾轻寒
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部