源文件
- 缩进使用空格而不是制表符
- 类中的成员按照逻辑顺序排列,函数重载应放在一起,中间不要插入其他方法
格式
- 即使是可选的,也要使用大括号
-
左大括号前不换行
左大括号后换行
右大括号前换行
如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。 - 块缩进两个空格
- 一行一个语句,一行通常限制在80~100个字符
- 自动换行,非赋值运算符(如+)应在其前断开;赋值运算符(如=)应在其后断开;逗号应在前一行;自动换行时至少缩进4个空格;
- 空行,类内连续的成员之间;函数体内的逻辑分组;
- 空格,保留字与括号的外侧;在, : ;及右括号)后一条语句后的注释,双斜杠前后都要加空格
- 尽量使用小括号
- 变量声明,一次只声明一个变量;当需要使用变量时才声明,并且尽快初始化
- 注解,紧跟在文档块后,一个注解独占一行。
@Override
@Nullable
public String getNameIfPresent() { ... }
- 块注释风格
/*
* This is // And so /* Or you can
* okay. // is this. * even do this. */
*/
- 类和成员的modifiers的顺序:public protected private abstract static final transient volatile synchronized native strictfp
命名
- 包名,包名全部小写,连续的单词只是简单地连接起来,不使用下划线。
- 类名,驼峰命名法;类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语;测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTest或HashIntegrationTest
- 方法名,小驼峰命名法;方法名通常是动词或动词短语。
- 常量,全部字母大写,用下划线分隔单词
- 非常量字段,小驼峰命名法,通常是名词或名词短语
- 参数名,小驼峰命名法,避免用单个字符命名
- 局部变量,小驼峰命名法,局部变量可以使用宽松的缩写
- 类型变量名,可用以下两种风格之一进行命名:1. 单个的大写字母,后面可以跟一个数字(如:E, T, X, T2);2. 以类命名方式(5.2.2节),后面加个大写的T(如:RequestT, FooBarT)。
编程
- @Override:能用则用
- 异常,对捕获的异常应该进行响应,典型的做法是打印日志,如果确实不需要,用注释说明
javadoc
- 一般形式
/**
* Multiple lines of Javadoc text are written here,
* wrapped normally...
*/
public int method(String p1) { ... }
- Javadoc标记顺序:@param, @return, @throws, @deprecated
- 至少在每个public类及它的每个public和protected成员处使用Javadoc,如果一个注释是用来定义一个类,方法,字段的整体目的或行为, 那么这个注释应该写成Javadoc