#文件名
源文件以其最頂層的類名來命名,大小寫敏感,文件擴展名為.java。
#編碼方式
UTF-8
#結(jié)構(gòu)
一個源文件包含(按順序地):
許可證或版權(quán)信息(如有需要)
package語句
import語句
一個頂級類(只有一個)
***以上每個部分之間用一個空行隔開。
#package
(即package語句寫在一行里)
#import
不要出現(xiàn)類似這樣的import語句:import java.util.*;
(每個import語句獨立成行)
import語句可分為以下幾組,按照這個順序,每組由一個空行分隔:
所有的靜態(tài)導(dǎo)入獨立成組
com.google imports(僅當(dāng)這個源文件是在com.google包下)
第三方的包。每個頂級包為一組,字典序。例如:android, com, junit, org, sun
java imports
javax imports
組內(nèi)不空行,按字典序排列。
#類聲明
3.4.1 只有一個頂級類聲明
每個頂級類都在一個與它同名的源文件中(當(dāng)然,還包含.java后綴)。
例外:package-info.java,該文件中可沒有package-info類。
3.4.2 類成員順序
類的成員順序?qū)σ讓W(xué)性有很大的影響,但這也不存在唯一的通用法則。不同的類對成員的排序可能是不同的。 最重要的一點,每個類應(yīng)該以某種邏輯去排序它的成員,維護者應(yīng)該要能解釋這種排序邏輯。比如, 新的方法不能總是習(xí)慣性地添加到類的結(jié)尾,因為這樣就是按時間順序而非某種邏輯來排序的。
3.4.2.1 重載:永不分離
當(dāng)一個類有多個構(gòu)造函數(shù),或是多個同名方法,這些函數(shù)/方法應(yīng)該按順序出現(xiàn)在一起,中間不要放進其它函數(shù)/方法。
#大括號
4.1.1 使用大括號(即使是可選的)
大括號與if, else, for, do, while語句一起使用,即使只有一條語句(或是空),也應(yīng)該把大括號寫上。
4.1.2 非空塊:K & R 風(fēng)格
對于非空塊和塊狀結(jié)構(gòu),大括號遵循Kernighan和Ritchie風(fēng)格 (Egyptian brackets):
左大括號前不換行
左大括號后換行
右大括號前換行
如果右大括號是一個語句、函數(shù)體或類的終止,則右大括號后換行; 否則不換行。例如,如果右大括號后面是else或逗號,則不換行。
示例:
return new MyClass() {
@Override public void method() {
if (condition()) {
try {
something();
} catch (ProblemException e) {
recover();
}
}
}
};