基本命名规范
包命名
包名按照域名的范围从大到小逐步列出恰好和Internet上的域名命名规则相反
由一组以连接的标识符构成通常第一个标识符为符合网络域名的两个或者三个英文小写字母
People TestPage XMLExample
类接口命名
类的名字必须由大写字母开头而单词中的其他字母均为小写如果类名称由多个单词组成则每个单词的首字母均应为大写例如TestPage如果类名称中包含单词缩写则这个所写词的每个字母均应大写如XMLExample还有一点命名技巧就是由于类是设计用来代表对象的所以在命名类时应尽量选择名词
People TestPage XMLExample
方法名
方法的名字的第一个单词应以小写字母作为开头后面的单词则用大写字母开头可以为动词或动词+名词组合
设置/获取某个值的Method应该遵循setV/getV规范
返回长度的Method应该命名为length
测试某个布尔值的Method应该命名为isV
将对象转换为某个特定类型的Mehod应该命名为toF
getDate() length() isReady() toOracleFormat()
变量名
普通变量命名应该采用首字母小写其他字母首字母大写的方式
final static变量的名字应该都大写并且指出完整含义如果一个常量名称由多个单词组成则应该用下划线来分割这些单词如
NUM_DAYS_IN_WEEK MAX_VALU
如果需要对变量名进行缩写时一定要注意整个代码中缩写规则的一致性
context=ctx message=msg
通过在结尾处放置一个量词就可创建更加统一的变量
First(一组变量中的第一个) Last(一组变量中的最后一个) Next(一组变量中的下一个变量) Prev(一组变量中的上一个) Cur(一组变量中的当前变量)
无论什么时候均提倡应用常量取代数字固定字符串也就是说程序中除以外尽量不应该出现其他数字
索引变量ijk等只作为小型循环的循环索引变量
逻辑变量避免用flag来命名状态变量用is来命名逻辑变量
if(isClosed){ dosomeworks; return; }
数组
总是使用以下方式定义数组
int[] arr = new int[];
禁止使用C语言的是形式
禁止 int arr[] = new int[];
集合
数组或者容器推荐命名方式为名词+s的方式例如
List<Person> persons = getPerson() for(Person person : persons){ dosomeworks; }
泛型
应该尽量简明扼要(最好是一个字母)以利于与普通的class或interface区分
Container中的Element应该用E表示Map里的key用K表示value用VType用T表示异常用X表示
如果需要接收多个Type类型的参数应该用邻接T的大写字母——例如S——来依次表示当然也可以用T T这样的方式
public class HashSet<E> extends AbstractSet<E> {…} public class HashMap<K V> extends AbstractMap<K V> {…} public class ThreadLocal<T> {…} public interface Functor<T X extends Throwable> { T val() throws X; }
推荐的命名
当要区别接口和实现类的时候可以在类的后面加上Impl
interface Container class ContainerImpl
Exception类最好能用Exception做为类命名的结尾
DataNotFoundException InvalidArgumentException
抽象类最好能用Abstract做为类命名的开头
AbstractBeanDefinition AbstractBeanFactory
Test类最好能用Test做为类命名的结尾
ContainerTest
简称与缩写(不推荐使用)
cp代表colorPoint buf代表buffer off代表offset len代表length
除非是在循环中否则一般不推荐使用单个字母作为变量名不过也有例外即约定俗成的单个字母
b代表byte c代表char d代表double e代表Exception f代表float i j k代表整数 l代表long o代表Object s代表String v代表某些类型的特定值
代码风格
花括号
花括号统一采用以下格式
if(bool experssion){ dosomework; }
除非花括号中为空不然任何情况下不能省略花括号并且花括号必须换行例如
if(i==){ return; } while(true) {}
以下写法禁止出现
禁止 if(i != ) return; 禁止 if(i !=) {return;}
括号
括号的前后一个字符不需要空格例如
Person p = new Person(Jack )
空格
逗号之后紧跟一个空格
Person p = new Person(Jack China)
二元操作符前后跟空格
int i = a + b – c * d;
一元操作符不需要空格for语句分号后有空格
for(int i = ; I < ; i++){ dosomework; }
括号前后不需要空格
类
类的定义结构按照顺序为
) 常量
) 成员变量
) 构造函数
) 成员函数
) get和set方法
各个部分之间留出一个空行
例如
规范类模板
class Person{ private final static int MAX_AGE = ; private String firstname = Jack public Person(){} public Person(String firstname){ thisfirstname = firstname; } public void doExercise(){ dosomeworks; run() } private void run(){ dosomeworks; } public getFirstname(){ return firstname; } public setFirstname(String firstname){ thisfirstname = firstname; } }
构造函数
) 参数为空的构造函数出现在最上方
) 有调用关系的构造函数相邻
) 参数尽量由少到多从上至下排序
使用成员变量
在类的方法内引用成员变量了命名沖突以外不使用this非特殊情况在类的方法内都不使用get和set方法存取成员变量
方法
有调用关系的方法尽量放在相邻的位置public和private方法可以交叉放置
get和set方法所有需要公开的成员变量都要符合良好的javabean规范提供get和set方法尽量使用IDE工具自动生成
Javadoc注释
在每个程序的最开始部分一般都用Javadoc注释对程序的总体描述以及版权信息之后在主程序中可以为每个类接口方法字段添加 Javadoc注释每个注释的开头部分先用一句话概括该类接口方法字段所完成的功能这句话应单独占据一行以突出其概括作用在这句话后面可以跟随更加详细的描述段落在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落例如上面例子中的@auther和@version这些段落将在生成文档中以特定方式显示