代码review 方法之降龙十八掌

代码review 方法之降龙十八掌

1.       书写规范

口诀:编程书写要规范

示例:(1)类名首字母大写,方法和变量名首字母小写;且首字母都是英文。

     (2)if和else书写要加{}。下面是不规范的写法

          If (int i=2)

           Int j=3;

          Else int k=4;

2.       If判断

口诀:见到if就找else

示例:在程序中需要异常处理时,看有没有else的异常处理。

3.       Switch判断

口诀:switch中要有break、default,判断条件类型要正确。

示例:下面是不正确的写法

      String a=“fsz123”;

      Int i=Integer.parseInt(a);

      Switch(i){

         Case 0: system.out.paintln(“test”);

         Break;

}

4.       For循环判断

口诀:见到for循环多看两眼,边界是重点。

示例:对for循环中,看循环条件的边界是否正确。如

(1)       程序要求循环10次推出,你循环9次,就不正确。

(2)       程序变量是0;然后减减,条件小于10就成了死循环。

For(int i=0;i--;i<10){

}

(3)       传参数进来的变量要保证是正整数型。

5.       While判断

口诀:while要看内部的判断,防止死循环。

示例:(1) 对于判断条件是true的,要在while内部看到break。

           While(true){

              Break;

}

     (2)对于给出了变量跳出条件的,程序内部的判断要有该条件赋值的跳出循环处理。         Int i=0;

             While(i<10){

I++;

}

6.       类内存分配

口诀:类内存分配要释放,对象加载传递参数不可重复new。

示例:(1)类在new分配空间后,在不用的时候要进行内存释放的操作,特别是C++程序没有自动回收机制的。

     (2)类在new分配加载参数后传递使用,不能在此new,否则参数丢失。

Class Test{

public static void main(String[] args){      

A a=new A()  //动态分配A类

a.setName(“feng Mr”);//添加参数

B b=new B()   //动态分配B类

b.reslut(a);    //调用方法并传递A的对象。

    }

}

Public class B{

    Public void result(A a){

    //这里不能在进行对A 类new,A a=new A();

    System.out.painltn(a.getName());

}

}

7.       数组越界

口诀:看见数组把神提,问题往往在下标。

示例:数组使用的时候,往往越界会抛出异常;所以在使用的时候,占用的空间在合理空间内。

8.       返回值检查

口诀:返回值引用的类型要一致,值的流转深入方法内部多看看。

示例:(1)返回值的类型要和使用的类型一致。

     (2)对于方法返回值,进入内部看看返回的值是否符合要求,如返回的true、false等是否写反了。

      (3)对异常情况处理的,要看看不同异常情况返回的错误提示信息或标识码是否符合要求。

9.       字符串长度

口诀:不要小看字符串,长度是个大问题。

示例:String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了。又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。

A、 字符串长度没有控制,超过了最大的长度,就会抛异常。

B、 字符串长度过长,消耗内存影响性能。

C、 自定义字符串长度,使用时超出范围。

10.   类型转换

口诀:类型转换要合法,小心转换丢数据。

示例:要防止数据丢失或非法转换,如:double转换整数精度丢失,中文字符串转换整数,转换数据不符合要求。

11.   对象空验证

口诀:为空对象不能对参数进行去调用

示例:若类对象为空的时候,进行参数调用会抛异常。如下

Class Test {

   Private B b=null;//设置b类对象为空。

   Public void ceshi(){

   //没有new,进行分配内存就开始调用了,这里是不允许的。

   If(b.result==2){

   System.out.paintnl(“测试啦”);

}

}

}

Public class B {

   Public int result(){

   Return value=2;

}

}

12.   流数据try、catch、finally

口诀:数据的流转要有异常扑获和流关闭。

示例:(1)io流数据处理的时候,在遇到异常或使用完毕后的时候要有finally做流关闭,释放内存的处理。否则下一步使用时,无法执行。

     (2)连接数据库的类同样需要关闭数据流的处理。

13.   If、else、for循环嵌套太多

口诀:If、else、for不宜过多的嵌套。

示例:嵌套太多,造成机器反复翻译代码,性能也会下降。

14.   全局变量

口诀:全局变量引用注意值的变化和状态。

示例:(1)验证变量是否为需要的值或引用

     (2)查看调用的全局变量代表的状态是否符合要求。如:引用的变量状态为a时是正确的,但引用变量时用了变量为B的就错误了。

15.   多层嵌套的for循环

口诀:for的循环有多层,判断变量条件命名各不同;防止同一变量名,反复加减死循环。

示例:禁止使用同一个变量条件,否则容易造成死循环。还有对变量反复加减要注意,防止跳不出循环。

16.   变量初始化

口诀:赋值函数最危险,变量没有初始化。

示例:变量在做赋值使用的时候,要进行初始化处理。如下是错误的写法

      Int i;//应该初始化 i的值为正整数,如0;

      If(i==3){

}

17.   运算符顺序

口诀:遇到运算符,符号使用误混淆,优先运算要用好。

示例:(1)>和>=,&&和||的使用要考虑好,不要混淆乱用,区别是很大的。

     (2)遇到加减乘除的运算,需要加括号的地方不要忘记加,否则运算会乱掉。见如下

       If(!a&&b+C*d||e){

}

18.   随机码的生成

口诀:使用随机验证码有诀窍,时间间隔配合好。

示例:(1)防止一定时间内,验证码没有过期被重复使用。如:随机数为3个,过期时间为5分钟,在5分钟内有1002次请求,就会有2次发送的验证码重复使用。若加了防重复提交,就会造成后面的用户无法提交验证码。若设置过期时间为4分钟,就不会存在这个问题。

posted @ 2013-02-21 13:32  狼-志  阅读(432)  评论(0编辑  收藏  举报