【仅供内部供应商使用,不提供对外解答和培训】

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Note

公共API方法的参数不要超过4个,过多的参数不利于方法的理解和使用。除了关于HTTP请求之类的本身就带了Response和Request两个参数的方法除外。

Code Blocknote
if,if-else,for,while,do和switch语句后面必须跟上"大括号else,for,while,do和switch语句后面必须跟上“大括号{}"。主要是为了清晰的表名语句的作用范围和避免一些低级的错误。”。主要是为了清晰的表名语句的作用范围和避免一些低级的错误。
Code Block
title不推荐
if (statement) return;

...

Code Block
title不推荐
if (booleanExpression) {
     return true; 
} else { 
    return false;
}
Code Block
title正确
return booleanExpression;

 

...

Note

严格控制方法/变量的权限,只在当前类使用的方法/变量,必须使用private修饰符。

 

遵循零public方法原则,也就是尽量少的public方法。如果一个公共方法只有其子类调用,那么必须去掉这个公共方法。如果一个公共方法只有一个地方调用,考虑这个调用可否被其他方式替代。

...

静态变量——实例变量 
public变量——protected变量——private变量

Code Block

...

title不推荐
public class Test   {
   protected String myProtectedData = "Protected";
   public static final String AAA = "aaa";
   private String myPrivate = "Private";
   public String myData = "data";
}
Code Block
title

...

正确
public class Test   {
   public static final String AAA = "aaa";
   public String myData = "data";
   protected String myProtectedData = "Protected";
   private String myPrivate = "Private";
}
Note

禁止在类中出现魔术数,应该使用常量(static final)来替代。这种方式通过合适的常量名可以让其他人能读懂该魔术数的意义。

...

Code Block
title不推荐
public double area(double r) {
    return 3.14 * r *r;
}
Code Block

...

title正确
private static final int PI = 3.14; 
public double area(double r) { 
    return PI * r * r; 
}
Note

如果包含二元运算的表达式出现在三元运算符的“?”之前,应该用括号将他括起来。

Code Block
title

...

不推荐
return a + b > 0 ? "student" : "teacher";

...

Code Block
title正确
return (a + b > 0) ? "student" : "teacher";
Note

常量命名必须全部大写,单词之间用下划线分割。

...

同时需要注意的是:如果常量是写在接口中的,那么忽略掉所有的修饰符。

Code Block
title不推荐
public static final String WidgetName = "WidgetName";
Code Block
title

...

正确
public static final String WIDGET_NAME = "WidgetName";

...

用于设置对象属性的方法前缀必须是set,用于获取一个布尔对象属性的方法前缀必须是is,而用于获取其他类型属性的方法前缀必须是get。

...

Note

用于设置对象属性的方法前缀必须是set,用于获取一个布尔对象属性的方法前缀必须是is/has,而用于获取其他类型属性的方法前缀必须是get。

Code Block
title不推荐
public class Student {
    private boolean male;

    public boolean getMale() {
        return male;
    }
}
Code Block
title

...

正确
public class Student {
    private boolean male;

    public boolean isMale() {
        return male;
    }
}
Note

不要向构造函数和公共方法中传递null参数。null参数很难直接从方法声明上去理解该参数的意义。

 

假设有如下的工具方法:

Code Block
titleUtils
public class Utils { 
   public static Border createBorder(Font font, Color color) {
         if (color == null) { 
             color = new Color(223, 122,123);
          } 
    } 
}

...

Code Block
title不推荐
Border border = Utils.createBorder(font, null);

...

Code Block
title正确
//先在Utils里面加这么个方法: 
public static Border createBorder(Font font) { 
    return createBorder(font, null);
} 
//再调用
Border border = Utils.createBorder(font);
Note

在重写方法时,禁止出现下面的写法,即只简单的调用了一下super而没有额外的实现, 这里有一个例外,就是实现了FClone接口的类必须要实现clone方法,和该规则冲突,不用管。

...

Code Block
title不推荐
@override
public void doSomething() {
    super.doSomething(); 
}
Note

代码中出现的中文(英文)等字符,必须做国际化。

Code Block
title

...

错误
String shapeName = "圆形";
Code Block

...

title正确
String shapeName = Inter.getLocText("FR-Designer_Chart_Circle");

...

Note

包名要具有描述意义,而且包中的类需要严格按照包描述的意义进行放置,另外,包名都必须是由小写字母组成。

 

比如com.fr.chart.axis包中的所有类都必须是和坐标轴相关的类。
Note

数组的声明总是采用统一的方式。

Code Block
title

...

不推荐
String strArray[];

...

Code Block
title正确
String[] strArray;
Note

如果一个方法的返回值是数组,那么就必须返回一个数组,如果是空值就使用空数组的代替。

Code Block
title示例
public String[] getNames4JionTheParty() {
     if (a) {   
         return new String[] {

...

"张三", 

...

"李四", 

...

"王麻子"};
     } else (b) {
         return new String[0]; 
     } 
}
Note

在需要条件判断的地方,比如if语句里不要写过长的表达式(不超过两个逻辑表达式),此时应该用一个方法来替代表达式。

Code Block

...

title不推荐
if (a > -1 && a != 1 && dim.width > 0 && dim.height > 0) { 
    doSomething(); 
}
Code Block
title

...

正确
if (shouldDoSomething(a, dim)) { 
    doSomething(); 
} 
boolean shuoldDoSomething(int a, Dimension dim) {
    return a > -1 && a != 1 && dim > width && dim.height > 0;
}

 

 
使用HashMap和HashSet以及HashTable等时要注意,如果使用的自定义的对象作为key,需要同时重写该对象的equals和hashCode方法。

...