`

code Review

 
阅读更多
1、为什么要Code Review
    
     1、一般情况下一个软件项目是需要多个开发人参与一同完成,因此会存在编码风格和质量的差异。差异越多就越容易影响代码的可读性及维护性。代码维护性越多,后期成本会成倍增长。
       2、由于一些人可能限于水平,在编码过程中引入了较低级且显而易见的错误,比如:资源没有释放,造成内存泄漏。而这些问题只有在Code Review中才能发现和纠正,通过测试是很难发现的。
       3、提高整个开发团队的开发水平


2、从哪些方面Code Review

       1、开发的代码是否符合编程规范和设计文档规范

       2、注释是否符合规范
    
       3、Java中命名方法是否正确(方法名,变量名采取驼峰命名方式,一般首字母小写,其他后面单词首字母大写;类名接口名采取首字母大写;常量采取全部大写;包名采取全部小写)

      4、import中避免星号“*”,删除没用的import。可通过ctrl+shift+o能自动处理

      5、长度限制(文件长度默认2000行;每行长度:80;方法长度:150;方法的参数:7)

      6、关键字出现的顺序,如:public static final XXX

      7、避免三目运行符

      8、一个Class中是否oveeride 了equals和hashCode方法

      9、建议在java中不要使用switch,C++/C--/++C/--C

      10、不可读数据:
                              如:sex=0,这表示什么,大多数情况下,就连作者本人都要皱眉头想半天,所以这里的"0"是魔法法。如果这样写就好的多:
            public static final int MALE=0;
            sex = MALE;

      11、循环体中是否出现更改循环体变量,如:

           for(int i = 0; i < 1; i++){
               i++;
         }

     12、嵌套的if层次
           通过指定来限制if-else的嵌套层次,即一个if中包含另一个if。如:
         if(true){
            if(true){
          
             }
       }默认为1,建议可以增加,另外还可以检查try等嵌套

    13、检查并确认一个类中clone()方法与finalize()都调用了父类的clone()与finalize().

   14、限制一个方法中return语句的数据(默认是2条),如果return语句太多,说明某个方法实现的功能过多,而且很难阅读。

   15、在一个方法中,禁止对传来的参数进行赋值,如:

        public someMethod(String para1){
               para1 = "new para1";   //这是禁止的
       }

   16、确保某个class在被使用时都已经被初始化成默认值(对象是null; 数据和字符是0;boolean变量是false)

   17、确保在一个.java文件中,同样内容的字符串不可出现多次。如String name  String mz

   18、同一行中禁止声明多个变量,即每行只能声明一个变量

   19、不使用this(容易造成badTokenException的异常)

3、FindBugs简介

    这是一款静态分析工具,主要用于检查程度错误和性能问题。

     工作原理:它检查类或者jar文件,将字节码(字节码文件即.class文件)与一组缺陷模式进行对比以发现可能的问题


4、FindBugs能检查的问题类型

        1、正确性(Correntness):这种类型的问题在某种情况下会导致bug,如强制类型转换等异常。


2、不良实践(Bad practice):这种类型下的代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode()方法等.

3、多线程正确性(MultiThread correntness):关注于同步和多线程问题。


        4、性能(performance):潜在的性能问题

        5、安全(Security):安全问题

        6、高危(Dodgy):FindBugs团队认为该类型的问题导致bug的可能性很高


[i]5、FindBugs可以具体检查哪些[/i]

     1、在一个类中的equals方法参数必须是Object,有人会这样写public boolean equals(ClassXX para)。comparaTo()也必须是Object.

      2、Random这个类下的实例可以重复使用,不需要重复创建

      3、实现Clonable接口,必须重写clone方法,但clone方法中必须要调用父类的clone

      4、重写equals方法时也必须重写hashCode(),因为大家均默认相同的对象也有相同的hashCode.

     5、方法中不能随意丢弃或忽略异常

    6、Collection中对象需要全部清除时,应该调用clear(),而不是removeAll()

     7、方法中不能随意调用System.exit()(用于结束掉当前正在运行的java虚拟机,即终止所有正在运行的程序),更不能随便调用System.runFinalizerOnExit(当程序结果的时候执行垃圾回收)
 
     8、比较对像时应使用equals而不是==

     9、finalizer()方法不能为空(对没有被引用的对像进行回收释放内存资源)为空时应该删除

    10、finalizer()方法中的参数为null时,也可删除此方法

    11、finalizer()方法中如果仅仅调用父类的方法,也可以删除

    12、finalizer()方法中必须调用父类的finalizer()方法

    13、不要通过类的实例去访问它的静态方法或变量

    14、不要在session中放入未实现序列化的对像

    15、返回Boolean 类型的方法返回null,会报空指针异常

    16、clone方法也不允许返回null

    17、toString() 也不允许返回null,应该返回空字符串。

    18、如果不是异常类,类的名称不能命名为XXException

    19、方法未关闭数据库(流等资源)或方法会抛出异常导致数据库不能关闭(如果不关流,长时间的话会出OutOfMemoryError异常;如果Connection没有关闭的话,连接就会一直被占用,当被占用的连接数达到tomcat设置的最大数时,就会导致系统连不上数据库了,而且一样会占用资源)

   20、方法中忽略的java.io.InputStream.read(),java.io.InputStream.skip(),File.delete()等方法的返回值

   21、实现了Comparator接口的对象,最好也实现Serializable接口,将对象放入Treemap时使用

  22、不能序列化的对象不能直接放到实现Serializable接口的对象中,要标记为transient

  23、如果一个类是Serializable的,其父类必须有默认的构造器,因为反序列化时会调用,而且此类必须有serialVersionUID

  24、如果一个类是Externalizable的必须有默认构造器。

  25、如果不是非常有必要不要乱用instanceof

  26、在hasNext方法里调用next

  27、synchronized不能加在Integer,Boolean等装箱变量上(因为在运算过程中,java是自动解箱,再装箱成新对象的,这一过程导致对像改变,无法用在synchronized上),






分享到:
评论

相关推荐

    Modern Code Review- A Case Study at Google.pdf

    Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an ...

    Source Insight CodeReview宏,增加使用说明

    **Source Insight CodeReview宏**是专门针对Source Insight这款强大的源代码查看和编辑工具设计的一套扩展功能,主要用于代码评审和统计。Source Insight以其强大的代码导航、语法高亮和实时分析能力,深受程序员...

    IDEA代码检视插件Code Review Helper(支持团队协同)

    在实际使用中,下载的压缩包文件"IntellijIDEA-CodeReview-Plugin-master"包含了插件的源代码,开发者可以对其进行定制或扩展以满足特定团队的需求。安装插件通常包括以下几个步骤: 1. 解压下载的压缩包。 2. 打开...

    Source Insight 宏 codeReview.em

    CodeReview工具的作用:1.减少评审人的缺陷记录和汇总时间,方便责任人查找问题出处;2.检视完成后生成检查报告,代码作者点击按钮可以直接找到错误处;3.任务责任人修改完成后,直接修改问题状态,组织者按快捷键...

    CodeReview工具Jupiter

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

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

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

    CodeReview工具

    Code Review是软件开发过程中的一个重要环节,它有助于提高代码质量,发现潜在的错误,以及确保团队成员间的代码风格一致。本文将详细介绍两款Eclipse插件——Jupiter和Reviewclipse,它们是进行Code Review的有力...

    代码审查CodeReview的最佳实践

    我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码...

    Redmine插件Code Review使用介绍

    在Redmine中,Code Review插件是一个重要的扩展,它致力于帮助开发团队进行代码审查,提升代码质量和团队协作效率。本文将详细介绍如何使用Redmine的Code Review插件。 首先,安装Code Review插件是必要的步骤。...

    CodeReview常見代碼問題

    ### CodeReview中的常见代码问题分析 #### 一、引言 在软件开发过程中,CodeReview(代码审查)是一项至关重要的活动。它不仅有助于提高代码质量,还能促进团队成员之间的知识共享和技术交流。本文将深入探讨Code...

    code review

    `CodeReview.em`可能是一个包含了代码审查过程记录或结果的文件,而`codereivew.docx`可能是详细的代码审查报告,其中可能详细列出了审查过程中发现的问题、建议的修改以及后续的行动计划。通过这两个文件,团队成员...

    Steven Code Review 代码在线审查

    Steven Code Review 2009.12M1发布包.rar 代码在线审查工具 @date: 2009-12-28 @author: YF @email: yifi@tom.com 功能: 1 方便学员学习教师的代码,无需在本机运行IDE即可以代码加亮的方式查看服务器共享的代码...

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

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

    code review tool from google

    标题:Code Review Tool from Google 描述:Code review on the web 根据给定的文件信息,我们可以提炼出关于代码审查(Code Review)及其在谷歌开发流程中的应用的关键知识点。 ### 什么是代码审查? 代码审查...

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

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

    code review代码检测原理

    **代码审查(Code Review)是软件开发过程中的一个重要环节,旨在提高代码质量,发现潜在的错误,提升团队协作效率,并确保代码遵循最佳实践和项目规范。本文将深入探讨代码审查的原理、步骤以及如何有效地执行代码...

    C++ Code Review检查清单

    C++代码 Code Review时使用的检查清单和问题记录模板

    Best kept secrets of peer code review

    首先,我们需要理解“同行代码审查”(Peer Code Review)的概念。这是一种质量保证活动,开发人员互相检查彼此的代码,旨在发现并修复错误,改进设计,以及传播知识和最佳实践。这个过程不仅限于找出错误,还在于...

    CodeReview.em

    source insighet 集成code review,代码审核时非常好用,使用起来比较简单,加入工程,同步,添加快捷键,使用快捷键即可正常使用,保存即可。

Global site tag (gtag.js) - Google Analytics