標籤:
本文僅是我個人在實際開發中習慣的編寫方式,當然這種方式也是來自很多官方的推薦,所以在一定程度上是可以被模仿套用的。本文將不定期更新~
使用特殊逸出序列而不是它的八進位
我們應該用特殊的轉移序列,比如:(\b, \t, \n, \f, \r, \”, \’及\),而不是它們對應的八進位,比如:\012
大膽使用非ASCII字元
如果我們在實際中需要用到非ASCII字元,我們當然可以去查表得到他們的轉義碼,但是沒有必要。你可以大膽的在代碼中這麼寫,或者加上注釋。應為這樣很便於閱讀。
String unitAbbrev = "μs";
import不要使用萬用字元
不要出現類似這樣的import語句:import java.util.*;
不要忽略大括弧
大括弧與if, else, for, do, while語句一起使用,即使只有一條語句(或是空),也應該把大括弧寫上。
什麼時候換行
對於非空塊和塊狀結構,大括弧遵循Kernighan和Ritchie風格
(Egyptian brackets):
- 左大括弧前不換行
- 左大括弧後換行
- 右大括弧前換行
- 如果右大括弧是一個語句、函數體或類的終止,則右大括弧後換行; 否則不換行。例如,如果右大括弧後面是else或逗號,則不換行。
boolean isShow = true; if (isShow) { } else { }
截斷代碼換行
如果一行代碼太長了,那麼可能會需要換行。這時候換行的原則是:在“非賦值運算子”處斷開。下面是幾個例子:
“+”在下一行
String url = "http://blog.isming.me/2014/10/27/" + "google-java-style/";
“&”在下一行
if (changed == true & show == true) { }
“."在下一行
Logger .init(YOUR_TAG) // default PRETTYLOGGER or use just init() .setMethodCount(3) // default 2 .hideThreadInfo() // default shown .setLogLevel(LogLevel.NONE); // default LogLevel.FULL
變數聲明
每次只聲明一個變數,不要:int a,b;
推薦下面的方式:
int a;int b;
數組中的中括弧
中括弧應該是類型的一部分,不要按照C++的方式來寫,而且中括弧和左邊不要有空格。應該像下面這樣:
int[] d
Switch-case中的default
每個switch語句都包含一個default語句組,即使它什麼代碼也不包含。
Switch-case中的break
如果你的上一個判斷和下個判斷需要執行的代碼是一致的,那麼你可以不用break,但必須在原來break的地方加上注釋。
switch (input) { case 1: case 2: prepareOneOrTwo(); // break; // fall through case 3: handleOneTwoOrThree(); break; default: handleLargeNumber(input); }
限定符的順序
我們的變數或方法可能有多個限定符,比如public,static什麼的,那麼請按照如下的順序進行編寫。
public protected private abstract static final transient volatile synchronized native strictfp
eg:
public static final String TAG;
包名的取法
包名全部小寫,連續的單詞只是簡單地串連起來,不能使用底線。
類名
類名通常是名詞或名詞短語,介面名稱有時可能是形容詞或形容詞短語。
方法名
方法名通常是動詞或動詞短語。
異常
一般情況下捕獲的異常都是需要列印出log的,但有些異常是我們在已知的,或者在這裡出現異常是必然的化,我們可以不加捕獲,但需要添加註釋。
如果一個捕獲的異常被命名為expected,則它可以被不加註釋地忽略。下面是一種非常常見的情形,用以確保所測試的方法會拋出一個期望中的異常,
因此在這裡就沒有必要加註釋。
try { emptyStack.pop(); fail();} catch (NoSuchElementException expected) {}
Javadoc標記
標準的Javadoc標記按以下順序出現:@param, @return, @throws, @deprecated, 前面這4種標記如果出現,描述都不可為空。
當描述無法在一行中容納,連續行需要至少再縮排4個空格。
/** * Adds a {@link Fragment} to this activity‘s layout. * * @param containerViewId The container view to where add the * fragment.(換行得有縮排) * * @param fragment The fragment to be added. */
除了第一個段落,每個段落第一個單詞前都有標籤<p>,並且它和第一個單詞間沒有空格。
Android Java類編寫規範