在上一篇的java編程規範(一)中咱們講述了在Java編碼中的通常原則,雖然這些原則並不涉及具體的代碼規範,可是這些原則倒是咱們在Java開發過程當中所應該遵循的規範與思想。今天咱們將學習一些涉及具體代碼書寫的格式規範。java
爲了加強代碼的可讀性,咱們經常把一些單獨的語句組織成語句塊,並對各塊統一縮進使之與周圍代碼分開。編程
1、若是咱們使用開發環境,則咱們能夠使用開發環境提供的縮進樣式。可是若是咱們是手寫代碼,應該使用兩個空格縮進。segmentfault
class MyFuction { ··void function(int arg) { ····if (arg < 0) { ······for (int i = 0; i <= arg; i++) { ········// ... ······} ····} ··} }
2、塊語句起始端的大括號應該放在引入塊語句那一行的最後,結束端的大括號要獨佔一行,而且與引入嵌套語句那一行的第一個字母對齊。咱們平常使用的代碼規範以下:
類定義:dom
public class MyClass { ··· }
內部類定義:編輯器
public class OuterClass { ··· class InnerClass { ... } }
方法定義:學習
void method(int j) { ··· }
for循環語句:this
for (int i = 0; i <= j; i++) { ··· }
if-else語句:編碼
if (j < 0) { ··· } else if ( j > 0) { ··· } else { ··· }
try,catch,finally塊:代碼規範
try { ··· } catch { ··· } finally { ··· }
switch語句:code
switch (value) { case 0: ··· break; default: ··· break; }
while語句:
while (a < b) { ··· }
do-while語句:
do { ··· } while (a < b);
爲了提升一個團隊的工做效率,不要讓每一個組員任意選擇各自代碼裏的縮進量及樣式,應該制定統一的一套標準的縮進規則,而且確保團隊裏的每一個人都遵循這個標準。
儘管在窗口化的現代編輯器中,能夠利用橫向滾動條來閱讀很長的單行代碼。可是打印機對於超過它最大打印寬度的語句,就會把它們截斷、換行或者打印在不一樣的頁上。所以,要把每行代碼的長度限制在打印環境所支持的最大寬度以內,這個值通常是80或者132個字符。
1、不要把多個語句放在同一行裏以避免超過最大可接受寬度。應該一條語句放置在一行裏。
// 這樣寫太長 double x = Math.random(); double y = Math.random(); // 應該一句佔一行 double x = Math.random(); double y = Math.random();
2、若是一行代碼中包含了複雜的表達式,就應該把它拆分爲幾個短小的子表達式,每一個子表達式的運算結果存儲在一個臨時變量裏,而且單獨放置在一行。
// 這樣的表達式太長 double length = Math.sqrt(Math.pow(Math.random(),2.0),Math.pow(Math.random(),2.0)); // 應該按下面這樣拆分 double x = Math.pow(Math.random(),2.0); double y = Math.pow(Math.random(),2.0); double length = Math.sqrt(x + y);
空白就是頁面上沒有可見字符的區域。代碼裏若是空白太少就會不易閱讀和理解,因此應該使用足夠多的空白把方法、註釋、代碼塊和表達式展現清楚。
1、如下狀況使用單空白來分隔:
(1) 右括號")"或者緊隨其後的關鍵字;關鍵字和緊隨其後的左括號"("或者"{";右括號")"和緊隨其後的左括號"{";其實細心的讀者會發如今上述內容的介紹中已經應用了這些規範,在此就不贅述了。
if (j < 0) { ··· } else if ( j > 0) { ··· } else { ··· }
(2) 除了"."以外的運算符與其先後的表達式之間。
double length = Math.sqrt(x * x + y * y); double x = length > 0.0 ? (x / length) : x;
2、如下狀況應該使用空行來分隔:
(1) 每一個邏輯上獨立的方法實現之間
void handleInfo(Message message) { DataInput content = message.getDataInput(); int messageType = content.readInt(); switch (messageType) { case warning: ... break; case error: ... break; default: ... break; } }
(2) 定義類或者接口時,每一個成員之間使用空行
public class Car { class InnerCar { ... } private Bar bar; Foo(Bar bar) { this.bar = bar; } }
(3) 源文件中,每一個類和接口的定義之間要使用空行
interface Paly { ... } public class Person implements Play{ ... }
不一樣的環境對Tab控制符的解釋也是不一樣的,代碼的格式在原來的編輯環境下可能正確無誤,可是若是放到另外一個對Tab控制符有不一樣解釋的系統中,可能格式混亂、沒法閱讀。
爲了不出現以上的狀況,咱們應該使用空格來縮進代碼。在一個團隊中,應該設置團隊通用的縮進標準,而且團隊裏的全部人都嚴格遵照這個標準。