請使用 UTF-8 格式來查看代碼,避免出現中文亂碼。
至於注釋應該使用中文還是英文,請自己行決定,根據公司或項目的要求而定,推薦使用英文。
1. 整理代碼
1.1. Java 代碼中不允許出現警告,無法消除的警告要用 @SuppressWarnings。
1.2. 去掉無用的包、方法、變數等,減少殭屍代碼。
1.3. 使用 Lint 工具來查看並消除警告和錯誤。
1.4. 使用 Ctrl+Shift+F 來格式化代碼,然後再進行調整。
1.5. 使用 Ctrl+Shift+O 來格式化 Import 包。
2. 命名規則
2.1. 基本原則
2.1.1. 變數,方法,類命名要表義,嚴格禁止使用 name1, name2 等命名。
2.1.2. 命名不能太長,適當使用簡寫或縮寫。(最好不要超過 25 個字母)
2.1.3. 方法名以小寫字母開始,以後每個單字首大寫。
2.1.4. 避免使用相似或者僅在大小寫上有區別的名字。
2.1.5. 避免使用數字,但可用 2 代替 to,用 4 代替 for 等,如 go2Clean。
2.2. 類、介面
2.2.1. 所有單詞首字母都大寫。使用能確切反映該類、介面含義、功能等的詞。一般採用名詞。
2.2.2. 介面帶 I 首碼,或able, ible, er等尾碼。如ISeriable。
2.3. 欄位、常量
2.3.1. 成員變數以 m 開頭,靜態變數以 s 開頭,如 mUserName, sInstance。
2.3.2. 常量全部大寫,在詞與詞之前用底線串連,如 MAX_NUMBER。
2.3.3. 代碼中禁止使用寫入程式碼,把一些數字或字串定義成常用量。
2.3.4. 對於廢棄不用的函數,為了保持相容性,通常添加 @Deprecated
3. 注釋
請參考 下面樣本類的注釋。
4. Class 內部順序和邏輯
4.1. 每個 class 都應該按照一定的邏輯結構來排列基成員變數、方法、內部類等, 從而達到良好的可讀性。
4.2. 總體上來說,要按照先 public, 後 protected, 最後 private, 函數的排布 也應該有一個邏輯的先後順序,由重到輕。
4.3. 以下順序可供參考:
定義TAG,一般為 private(可選)
定義 public 常量
定義 protected 常量、內部類
定義 private 變數
定義 public 方法
定義 protected 方法
定義 private 方法
5. 運算式與語句
5.1. 基本原則:採用緊湊型風格來編寫代碼
5.2. 細則請參見樣本類CodingRuler
| 代碼如下 |
複製代碼 |
/** * 檔案名稱(可選),如 xxx.java * * 版本資訊(可選),如:@version 1.0.0 * * 著作權申明(開原始碼一般都需要添加),如:Copyright (C) 2010-2014 xxx Corporation. */ package com.ntes.ruler; /** * 類的大體描述放在這裡。 * * * @author 作者名 * @since 2014-XX-XX */ @SuppressWarnings("unused") public class CodingRuler { /** 公有的常量注釋 */ public static final String ACTION_MAIN = "android.intent.action.MAIN"; /** 私人的常量注釋(同類型的常量可以分塊並緊湊定義) */ private static final int MSG_AUTH_NONE = 0; private static final int MSG_AUTH_SUCCESS = 1; private static final int MSG_AUTH_FAILED = 2; /** 保護的成員變數注釋 */ protected Object mObject0; /** 私人的成員變數 mObject1 注釋(同類型的成員變數可以分塊並緊湊定義) */ private Object mObject1; /** 私人的成員變數 mObject2 注釋 */ private Object mObject2; /** 私人的成員變數 mObject3 注釋 */ private Object mObject3; /** * 對於注釋多於一行的,採用這種方式來 定義該變數 */ private Object mObject4; /** * 公有方法描述... * * @param param1 * 參數1描述... * @param param2 * 參數2描述... * @param paramXX * 參數XX描述... (注意:請將參數、描述都對齊) */ public void doSomething(int param1, float param2, String paramXX) { // 以下注釋標籤可以通過Eclipse內建的Task外掛程式看到 // TODO 使用TODO來標記代碼,說明標識處有功能代碼待編寫 // FIXME 使用FIXME來標記代碼,說明標識處代碼需要修正,甚至代碼是 // 錯誤的,不能工作,需要修複 // XXX 使用XXX來標記代碼,說明標識處代碼雖然實現了功能,但是實現 // 的方法有待商榷,希望將來能改進 } /** * 保護方法描述... */ @Deprecated protected void doSomething() { // ...implementation } /** * 私人方法描述... * * @param param1 * 參數1描述... * @param param2 * 參數2描述... */ private void doSomethingInternal(int param1, float param2) { // ...implementation } /** * 條件運算式原則。 */ private void conditionFun() { boolean condition1 = true; boolean condition2 = false; boolean condition3 = false; boolean condition4 = false; boolean condition5 = false; boolean condition6 = false; // 原則: 1. 所有 if 語句必須用 {} 包括起來,即便只有一句,禁止使用不帶{}的語句 // 2. 在含有多種運算子的運算式中,使用圓括弧來避免運算子優先順序問題 // 3. 判斷條件很多時,請將其它條件換行 if (condition1) { // ...implementation } if (condition1) { // ...implementation } else { // ...implementation } if (condition1) /* 禁止使用不帶{}的語句 */ condition3 = true; if ((condition1 == condition2) || (condition3 == condition4) || (condition5 == condition6)) { } } /** * Switch語句原則。 */ private void switchFun() { // 原則: 1. switch 語句中,break 與下一條 case 之間,空一行 // 2. 對於不需要 break 語句的,請使用 /* Falls through */來標註 // 3. 請預設寫上 default 語句,保持完整性 int code = MSG_AUTH_SUCCESS; switch (code) { case MSG_AUTH_SUCCESS: break; case MSG_AUTH_FAILED: break; case MSG_AUTH_NONE: /* Falls through */ default: break; } } /** * 迴圈運算式。 */ private void circulationFun() { // 原則: 1. 盡量使用for each語句代替原始的for語句 // 2. 迴圈中必須有終止迴圈的條件或語句,避免死迴圈 // 3. 迴圈要儘可能的短, 把長迴圈的內容抽取到方法中去 // 4. 嵌套層數不應超過3層, 要讓迴圈清晰可讀 int array[] = { 1, 2, 3, 4, 5 }; for (int data : array) { // ...implementation } int length = array.length; for (int ix = 0; ix < length; ix++) { // ...implementation } boolean condition = true; while (condition) { // ...implementation } do { // ...implementation } while (condition); } /** * 異常捕獲原則。 */ private void exceptionFun() { // 原則: 1. 捕捉異常是為了處理它,通常在異常catch塊中輸出異常資訊。 // 2. 資源釋放的工作,可以放到 finally 塊部分去做。如關閉 Cursor 等。 try { // ...implementation } catch (Exception e) { e.printStackTrace(); } finally { } } /** * 其它原則(整理中...)。 */ private void otherFun() { // TODO } }
|
無覓相關文章外掛程式,快速提升流量