关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来。
为什么要做
- 通过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
- 必要的验证码
水平权限
- 不用用户之间的不能相互操作
标准
- 代码整洁
- 可读性好
- 可维护性高
- 性能优
相关推荐
Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。 ...
CodeReview的基本手段还是需要技术经理通过人工检查项目成员的代码,来将各种问题扼杀在开发阶段,但是不同经验及技术水平的经理在review同一段代码所发现的问题可能相差比较大,不同的Team可能因此产生的效果也不同...
在实际使用中,下载的压缩包文件"IntellijIDEA-CodeReview-Plugin-master"包含了插件的源代码,开发者可以对其进行定制或扩展以满足特定团队的需求。安装插件通常包括以下几个步骤: 1. 解压下载的压缩包。 2. 打开...
静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...
软件介绍: 一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;... 直观可视:分析结果与源代码在同一界面显示对照,...http://www.codereview.com.cn
- **特定语言及框架的注意事项**:针对不同编程语言(如Java、PHP)及框架提出具体的审查建议。 - **自动化代码审查**:讨论自动化工具在代码审查过程中的作用及其局限性。 #### 五、具体技术控制审查实例 - **身份...
在Java项目开发中,代码审查(Code Review)是确保代码质量、遵循最佳实践以及提高团队协作效率的关键步骤。本文档将深入探讨在Code Review过程中常见的问题,并提供实例分析,以帮助开发者避免这些问题。 **第一章...
Java 代码审查检查清单 Java 是一种广泛使用的编程语言,用于开发各种应用程序。为了确保 Java 代码的质量和可靠性,代码审查是一个非常重要的步骤。代码审查可以帮助开发者发现和修复错误,提高代码的可读性和可...
JCR是一个基于Python的Web应用,面向大型项目和非常正式的code review。它可以用来review任何类型的代码,不仅是java代码,但一些特殊的功能只适用于Java项目。 JCR 主要想协助: 审查者 - 所有的代码更改都会被...
code_review(程序员必看) 为完成一个软件项目需要多个成员的参与,因此存在编码风格和质量上的差异。尽管在一个项目开始之初,团队内部就对编码进行了格式化上的规范,但是在实际 过程中,还是搀杂了许多个人的因素...
02_中软国际Java项目开发CodeReview常见问题实例分析及指南
Peepcode是一家知名的在线教育平台,提供了丰富的编程教程,其中关于Code Review的教程尤其受到开发者们的欢迎。这篇教程深入浅出地讲解了如何进行有效的代码审查,包括最佳实践、工具选择以及如何建立一个良好的...
java代码评审检查表:包含java常用代码审查内容
JAVE项目编码规范Code Review CheckList
### Java编程规范CheckList知识点详解 #### 一、概述 本文档旨在提供一份详尽的Java编程规范CheckList,帮助开发者遵循一致且高质量的编码标准。文档以表格形式列出了一系列编程过程中需要注意的关键事项,覆盖了...
该项目是基于IntelliJ IDEA的Code Review插件设计源码,包含117个文件,包括59个Java源文件、18个SVG图标文件、9个XML配置文件、7个JAR包文件、6个表单文件、3个SVG图表文件、3个GIF和PNG图片文件、3个STG脚本文件、...