命名要能大致体现出方法的功能,不能使用一个简单的单词。
1.类命名:首字母大写,其他单词除首字母大写外都使用小写(除开一些特殊单词,如URL,HTML这种)
2.方法名:首字母小写,其他单词除首字母大写外都使用小写
3.变量名:首字母小写,其他单词除首字母大写外都使用小写
4.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
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; } |