Android團隊項目開發之統一代碼規范----阿里云棲社區

原文地址:https://yq.aliyun.com/articles/11875

前言
團隊項目開發前的統一三要素:統一需求/開發文檔,統一代碼規范,統一環境(編譯/測試/發布)。
一個項目團隊,要想有高效的產出,必須在團隊協作上下好功夫,必須在項目開發統一進度上做好協調。只有在高效的協同環境下,才能有優質的產出。這是我多年的經驗之談。也是配合過多個團隊之后的深刻感悟。
每一個程序員都是有獨立開發思維模式,都有自己的編碼行為和操作習慣。所以,在一個團隊中,怎么做到更高效的協同,不僅僅是每個開發者自身的協同配合能力,更重要的是項目管理者,怎樣做到統一要求和統一實行。
舉個很簡單的例子。以前在一個小團隊里,每次進行代碼更新的時候,都是有一大堆更新。最后發現很多不是代碼功能的個性,而只是大家的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-> Editor-> Code Style-> JAVA-> Scheme 選擇自定義的編碼格式文件。 具體如下圖:
樣式

保持代碼格式的一致性,對項目的協同開發很有必要。優秀的代碼習慣是,提交代碼前格式化代碼,讓代碼統一規則上傳,保證代碼的整潔。所以,在團隊中必須支持規范代碼。提交前所有修改的類都必須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命名
控件縮寫{范圍}意義,范圍可選,只在有明確定義的范圍內才需要加上。
<TextView android:id="@+id/txt_header_title" ... /><Button android:id="@+id/btn_login" ... />

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<Void> 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; // 券idprivate String name; // 券名稱private String introduce; // 券簡介

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容