`
iamzhongyong
  • 浏览: 796406 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于CodeReview(java)

    博客分类:
  • java
阅读更多

关于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
  • 必要的验证码

水平权限

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

标准

  • 代码整洁
  • 可读性好
  • 可维护性高
  • 性能优
1
0
分享到:
评论
1 楼 liushicheng1 2014-10-29  
多谢分享,能再扩展讲下么?

相关推荐

    Java项目开发CodeReview 常见问题实例分析及指南

    CodeReview的基本手段还是需要技术经理通过人工检查项目成员的代码,来将各种问题扼杀在开发阶段,但是不同经验及技术水平的经理在review同一段代码所发现的问题可能相差比较大,不同的Team可能因此产生的效果也不同...

    CodeReview工具Jupiter

    Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。  ...

    code review(程序员必看)

    code review(程序员必看)code review(程序员必看)code review(程序员必看)

    Java Code review checklist.doc

    Java Code review checklist

    Codereview 代码审查工具(国人开发)

    软件介绍: 一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;... 直观可视:分析结果与源代码在同一界面显示对照,...http://www.codereview.com.cn

    什么是CodeReview

    Review的一些概念和经验的探讨,就如何进行CodeReview和CodeReview中应该注意什么提出一些建议。 本文中涉及的问题大部分针对JAVA类代码。同时本文不涉及CodeReview过程和组织。凡事知其然还要知其所以然,我们首先...

    JCR_codereview

    JCR是一个基于Python的Web应用,面向大型项目和非常正式的code review。它可以用来review任何类型的代码,不仅是java代码,但一些特殊的功能只适用于Java项目。 JCR 主要想协助: 审查者 - 所有的代码更改都会被...

    code_review(程序员必看)

    code_review(程序员必看) 为完成一个软件项目需要多个成员的参与,因此存在编码风格和质量上的差异。尽管在一个项目开始之初,团队内部就对编码进行了格式化上的规范,但是在实际 过程中,还是搀杂了许多个人的因素...

    02_中软国际Java项目开发CodeReview常见问题实例分析及指南.doc

    02_中软国际Java项目开发CodeReview常见问题实例分析及指南

    Java项目开发代码Review常见问题实例.doc

    Java项目开发代码Review常见问题实例

    java代码评审检查表.xls

    java代码评审检查表:包含java常用代码审查内容

    静态测试方法之代码审查(CodeReview)的清单

    静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...

    java代码审查规范文档

    Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。 Code Review主要用来在软件工程过程中改进代码质量,通过Code Review可以达到如下目的: .在...

    Java 项目编码规范

    Code Review CheckList-Java java开发中 细节规范

    搭建开源code review gerrit+git+repo服务器

    1.Java环境 gerrit依赖,用于安装gerrit环境。 下载:jdk-8u181-linux-x64.tar.gz http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装:sudo tar zxvf ./jdk-8u181-linux-x...

    gerrit-code-review-plugin:詹金斯CI的Gerrit SCM插件

    詹金斯的Gerrit Code Review插件 该插件允许将任何Jenkins多分支管道与无缝集成,以进行分支和更改验证。 为什么还有另一个插件? 我想将Gerrit CI验证工作流程用于任何项目,包括Gerrit插件或任何其他想要采用它...

    代码规范、命名、配置文件、Code+Review建议各类规范大全

    java、svn、mysql、dubbr、venus-common-monitor、venus-restful、公共码、日志、代码规范、命名、配置文件、Code+Review建议、postman等等等等;各类规范文档

    java版qq餐厅源码-Top-Review-Code:GitHub中的热门Diff项目

    java版qq餐厅源码 Top Review Code Github repositories Based on Here is a list of the top-200 Review Code Github repositories sorted by the number of stars. The query that has been used for the GitHub ...

    Java_CodeReview_Hair:代码审查以在OO Java环境中使用数据库进行测试

    Java App模板说明:用于使用Java创建应用程序的模板。 模板使用gradle下载所有必需的依赖项。 JUnit和FluentLenium用于测试。 Velocity用于创建网页模板。 Spark用于在本地服务器上运行程序。项目设置下载zip文件并...

    core_java_career_essentials.pdf

    If you have a java interview coming up in a few days or you want to impress your peers and superiors with your technical strengths during code review sessions, team meetings, and stand-ups, and ...

Global site tag (gtag.js) - Google Analytics