命名要能大致体现出方法的功能,不能使用一个简单的单词。
5.强制代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
6.强制类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型 的相关命名)DO / BO / DTO / VO等。
UserDAO,ParameterNameSpace,NetworkHelper
userDAO,ParameternameSpace,NETworkHelper
7.强制方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从 驼峰形式,且不要出现拼写错误。
localValue,getPureMessage(),userTextField
8.强制常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
public static final int MAX_STOCK_COUNT = 20;
public static final int max_stock_count = 20;
public static final int MAX_COUNT = 20;
9.强制抽象类命名使用 Abstract开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类的名称开始,以 Test 结尾。
10.强制包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是类名如果有复数含义,类名可以使用复数形式。
package com.fr.data.model;
package com.fr.chart.ChartAttr; // 使用了大写字母
package com.finebi.common.internalimp // 使用了多个语义的单词放一起
11.强制杜绝完全不规范的缩写,避免望文不知义。
public class DateWork {
private int remainDays = 10;//剩余的天数
public void calculateNameWithData(Data data) {
}
}
public class DateWork {
private int r = 10;//剩余的天数
public void cal(Data data) {
}
}
12.强制用于设置对象属性的方法前缀必须是set,用于获取一个布尔对象属性的方法前缀必须是is/has,而用于获取其他类型属性的方法前缀必须是get。
public class Student {
private boolean male;
public boolean isMale() {
return male;
}
}
public class Student {
private boolean male;
public boolean getMale() {
return male;
}
}
13.强制布尔类型的字段名不能以is/has开头。
public class Student {
private boolean male;
public boolean isMale() {
return male;
}
}
public class Student {
private boolean isMale;
public boolean getMale() {
return isMale;
}
}
14.强制禁止在类中出现魔术数,应该使用常量(static final)来替代。这种方式通过合适的常量名可以让其他人能读懂该魔术数的意义。
private static final int PI = 3.14;
public double area(double r) {
return PI * r * r;
}
public double area(double r) {
return 3.14 * r *r;
}
15.强制提供开放接口的时候,不要包含什么Custom之类的单词,作为一个开放接口,就已经是可以提供自定义的实现,不需要在特别去强调。
public interface PasswordHandleProcessor extends XMLable, Immutable {
String encrypt(String clientPassword);
String decrypt(String clientPassword);
}
public interface CustomPasswordCryptProcessor extends XMLable, Immutable {
String encodePassword(String clientPassword);
String decodePassword(String clientPassword);
}
16.强制为了方便链式调用,可能会提供返回自身的set方法,要求不得以set开头,而是提供两个方法。
public setIp(String ip) {
this.ip = ip;
}
public BlockIpEntity ip(String ip) {
this.setIp(ip);
return this;
}
public BlockIpEntity setIp(String ip) {
this.ip = ip;
return this;
}