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

Page tree

Versions Compared

Key

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

...

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;
}
Note

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

Note

变量的声明应当尽可能靠近其使用的位置。局部变量应该在方法顶部出现,而循环中的控值变量应该总是在循环语句中声明。

Note

当switch的一个case语句没有break时,需要在case结尾处写上注释,防止是漏掉了break语句而不是原本就是想贯穿的。

Code Block
title示例代码
public String diffResult(int type) {
    String someDescription = "abc";
    switch (type) {
        // 这里需要贯穿
        case 1:
          someDescription = "def";
        case 2:
          someDescription = "xyz";
          break;
        default:
            someDescription = "mnx";
            break;
    }
    return someDescription;
}
Note

异常信息的日志写法要符合规范。

Code Block
title错误的写法
try {
     doSomething();
} catch (Exception e) {
     e.printStackTrace();
}
Code Block
title正确的写法
try { 
    doSomething();
} catch (Exception e) {   
    FRContext.getLogger.error(e.getMessage, e);// 这里调用的方法视情况而定
}

 

 

Note

如果需要忽略掉异常信息,请显示的将异常对象命名为 ignore

Code Block
title忽略异常
try { 
    doSomething();
} catch (Exception ignore) {   
    
}
Note

在Java代码中需要输出JSON格式时,JSON字符串需要按照标准写。

Code Block
title错误
{a:"bb"};  
{'a':"bb"};
Code Block
title正确
{"aa":"bb"};
Note

在写需要输出到客户端的JSON对象时,如果需要输出数组对象,不要使用普通的Java数组对象,要使用JSONArray对象。

Code Block
titleJSONObject
JSONObject jo = JSONObject.create();
String[] names = new String[]{"aaa", "bbb", "ccc"}; 
jo.put("names", names);
Code Block
titleJSON数组
JSONObject jo = JSONObject.create();
JSONArray ja = new JSONArray(); ja.put("aaa").put("bbb").put("ccc"); jo.put("names", ja);
Note

如果需要使用空字符串,不要直接使用"",用StringUtils.EMPTY。

Code Block
title示例代码
if (name == null) {
    return  "";// 不正确
}
if (name == null) {
   return StringUtils.EMPTY;// 正确
}
Note

判断字符串是否为空,也要使用StringUtils#isEmpty(String);

Code Block
String name = createByAge(20);
if ("".equals(name)) {// 不正确
   
}
if (StringUtils.isEmpty(name)) { // 正确
}
Note

将一个对象转化为字符串,不能直接使用toString方法,需要使用GeneralUtils#objectToString(Object)方法。

Code Block
Key key = getKey();
String result = key.toString();// 错误,无法避免空指针等错误
String okStr = GeneralUtils.objectToString(key);// 正确
Note

从HTTP请求中获取参数的时候,需要使用NetworkHelper#getHTTPRequestParameter(HttpServletRequest,String)方法。

不用该直接用HttpServletRequest#getParameter(String)方法,这个方法会导致漏掉参数护着无法正确解码。