Android開發簡要編碼規則詳解

來源:互聯網
上載者:User

請使用 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
    }
}

無覓相關文章外掛程式,快速提升流量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.