Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 【項目篇】Android團隊項目開發之統一代碼規范

【項目篇】Android團隊項目開發之統一代碼規范

編輯:關於Android編程

前言

團隊項目開發前的統一三要素:統一需求/開發文檔,統一代碼規范,統一環境(編譯/測試/發布)。

一個項目團隊,要想有高效的產出,必須在團隊協作上下好功夫,必須在項目開發統一進度上做好協調。只有在高效的協同環境下,才能有優質的產出。這是我多年的經驗之談。也是配合過多個團隊之後的深刻感悟。

每一個程序員都是有獨立開發思維模式,都有自己的編碼行為和操作習慣。所以,在一個團隊中,怎麼做到更高效的協同,不僅僅是每個開發者自身的協同配合能力,更重要的是項目管理者,怎樣做到統一要求和統一實行。

舉個很簡單的例子。以前在一個小團隊裡,每次進行代碼更新的時候,都是有一大堆更新。最後發現很多不是代碼功能的個性,而只是大家的code style不一樣。每次merge代碼都要diff查看修改的地方,這樣很影響效率。而且如果你只是做為一個普通的開發者,要求其它人和你用統一style,別人未必接受。這時的項目管理者,才是最需要去統一規范的。保持規范統一,才是高效協作產出的前提。

Android項目開發需要統一哪些規范呢?
在些列出一些常用規范,和容易出問題的地方,方便自己查找,也方便和更多的朋友交流!
一、編碼方式統一:UTF-8。一般項目都用utf-8。有其它編碼的,可自行要求修改。
在項目代碼中右鍵,就能出現如下:
修改編碼

或者去個性配置文件:
修改編碼

二、代碼樣式code style:比如,tab縮進4個空格,或者 tab size等。
1. 自定義的編碼格式xml 文件。沒有的話,可以下載
2. 把xml文件復制到 C:/Users/YourUserName/.AndroidStudio/config/codestyles 目錄下,如果沒有codestyles目錄可以自己新建一個。 (目前還不支持導入)
3. 重啟android studio
4. android studio 中 Setting-> EditZ喎?/kf/ware/vc/" target="_blank" class="keylink">vci0mZ3Q7IENvZGUgU3R5bGUtJmd0OyBKQVZBLSZndDsgU2NoZW1lINGh1PHX1Lao0uW1xLHgwuu48cq9zsS8/qGjPGJyIC8+DQq+38zlyOfPws28o7o8YnIgLz4NCjxpbWcgYWx0PQ=="樣式" src="/uploadfile/Collfiles/20160329/20160329134246201.png" title="\" />

保持代碼格式的一致性,對項目的協同開發很有必要。優秀的代碼習慣是,提交代碼前格式化代碼,讓代碼統一規則上傳,保證代碼的整潔。所以,在團隊中必須支持規范代碼。提交前所有修改的類都必須ctrl+f(規范代碼),然後再提前。良好的編碼習慣,能讓代碼變得更優雅漂亮。

命名規范

Java代碼一般使用駝峰式規則,用名詞或名詞詞組命名,每個單詞的首字母大寫。常用類的命名:

activity類,命名以Activity為後綴,如:LoginActivity fragment類,命名以Fragment為後綴,如:ShareDialogFragment service類,命名以Service為後綴,如:DownloadService adapter類,命名以Adapter為後綴,如:CouponListAdapter 工具類,命名以Util為後綴,如:EncryptUtil 模型類,命名以BO為後綴,如:CouponBO 接口實現類,命名以Impl為後綴,如:ApiImpl

方法命名

初始化方法,命名以init開頭,例:initView 按鈕點擊方法,命名以to開頭,例:toLogin 設置方法,命名以set開頭,例:setData 具有返回值的獲取方法,命名以get開頭,例:getData 通過異步加載數據的方法,命名以load開頭,例:loadData 布爾型的判斷方法,命名以is或has,或具有邏輯意義的單詞如equals,例:isEmpty

控件命名

控件命名,一般都有各自習慣。但為了保證代碼的整潔,盡量保持統一風格。
控件

常量命名

全部為大寫單詞,單詞之間用下劃線分開。
public final static int PAGE_SIZE = 20;

變量命名

{范圍描述+}意義描述+類型描述的組合,用駝峰式,首字母小
private TextView headerTitleTxt; // 標題欄的標題
private Button loginBtn; // 登錄按鈕

控件id命名

控件縮寫{范圍}意義,范圍可選,只在有明確定義的范圍內才需要加上。





layout命名

組件類型{范圍}功能,范圍可選,只在有明確定義的范圍內才需要加上。

   activity_{范圍_}功能,為Activity的命名格式 
   fragment_{范圍_}功能,為Fragment的命名格式
   dialog_{范圍_}功能,為Dialog的命名格式 
   item_list_{范圍_}功能,為ListView的item命名格式
   item_grid_{范圍_}功能,為GridView的item命名格式
   header_list_{范圍_}功能,為ListView的HeaderView命名格式
   footer_list_{范圍_}功能,為ListView的FooterView命名格式

strings的命名

類型{范圍}功能,范圍可選。
以下為幾種常用的命名:

頁面標題,命名格式為:title_頁面
按鈕文字,命名格式為:btn_按鈕事件
標簽文字,命名格式為:label_標簽文字
選項卡文字,命名格式為:tab_選項卡文字
消息框文字,命名格式為:toast_消息
編輯框的提示文字,命名格式為:hint_提示信息
圖片的描述文字,命名格式為:desc_圖片文字
對話框的文字,命名格式為:dialog_文字
menu的item文字,命名格式為:action_文字

colors的命名

前綴{控件}{范圍}{_後綴},控件、范圍、後綴可選,但控件和范圍至少要有一個。

背景顏色,添加bg前綴
文本顏色,添加text前綴
分割線顏色,添加div前綴
區分狀態時,默認狀態的顏色,添加normal後綴
區分狀態時,按下時的顏色,添加pressed後綴
區分狀態時,選中時的顏色,添加selected後綴
區分狀態時,不可用時的顏色,添加disable後綴

drawable的命名

前綴{控件}{范圍}{_後綴},控件、范圍、後綴可選,但控件和范圍至少要有一個。

圖標類,添加ic前綴
背景類,添加bg前綴
分隔類,添加div前綴
默認類,添加def前綴
區分狀態時,默認狀態,添加normal後綴
區分狀態時,按下時的狀態,添加pressed後綴
區分狀態時,選中時的狀態,添加selected後綴
區分狀態時,不可用時的狀態,添加disable後綴
多種狀態的,添加selector後綴(一般為ListView的selector或按鈕的selector)

動畫文件命名

動畫類型_動畫方向。

fade_in,淡入
fade_out,淡出
push_down_in,從下方推入
push_down_out,從下方推出
slide_in_from_top,從頭部滑動進入
zoom_enter,變形進入
shrink_to_middle,中間縮小

注釋規范

文件頭注釋

文件頂部統一添加版權聲明,聲明的格式如下:

/**
 * Copyright (c) 2015. Keegan小鋼 Inc. All rights reserved.
 */
類和接口注釋
類和接口統一添加javadoc注釋,格式如下:
/**
 * 類或接口的描述信息
 *
 * @author ${USER}
 * @date ${DATE}
 */

方法注釋
下面幾種方法,都必須添加javadoc注釋,說明該方法的用途和參數說明,以及返回值的說明。

接口中定義的所有方法 抽象類中自定義的抽象方法 抽象父類的自定義公用方法 工具類的公用方法
/**
 * 登錄
 *
 * @param loginName 登錄名
 * @param password  密碼
 * @param listener  回調監聽器
 */
public void login(String loginName, String password, ActionCallbackListener listener);
變量和常量注釋

下面幾種情況下的常量和變量,都要添加注釋說明,優先采用右側//來注釋,若注釋說明太長則在上方添加注釋。

接口中定義的所有常量 公有類的公有常量 枚舉類定義的所有枚舉常量 實體類的所有屬性變量
public static final int TYPE_CASH = 1; // 現金券
public static final int TYPE_DEBIT = 2; // 抵扣券
public static final int TYPE_DISCOUNT = 3; // 折扣券

private int id;                // 券id
private String name;           // 券名稱
private String introduce;      // 券簡介

注:部分信息來源於網絡,若有使用不當,請聯系!感謝!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved