標籤:
簡明概要 多寫注釋
一、關於命名規範
對於開發項目來說肯定是要有統一的規範,然而命名規範需要做到哪幾點呢?
答: 首先,不能反人類。 再來就是,要望文而知其意。
下面就來說說具體該怎麼去規範我們的代碼了。How to name?
1)Java類檔案
i. Activity 命名規範: 以Activity作為尾碼, 例如 personActivity。
ii. Adapter命名規範: 以Adapter作為尾碼, 例如 personAdapter。
iii. Entity 命名規範: 大多以Entity作為尾碼, 例如 personEntity。 值得注意的是,User是全域變數,不算實體,不用這樣來命名。
2)資源檔
①layout目錄下(都用小寫好麼)
i. 頁面配置檔案:
以act_ 為首碼,以Activity所在的Packege作為中綴, 以Activity的名稱(去掉Activity)作為尾碼。
如: act_person_addcoustomer.xml 表示在Person模組下的AddCustomerActivity對應的Layout布局檔案。
ii. ListView中的item布局檔案:
以item_作為固定首碼,清單項目的名稱作為尾碼。
如: item_lvuserlist.xml 表示在某個頁面下有一個使用者列表,控制項名為lvUserList對應的item的layout布局檔案。
iii. Dialog布局檔案:
以dlg_作為固定首碼,Dialog的功能名稱作為尾碼。
如: dlg_hint.xml 表示什麼呢?都知道吧
②drawable目錄下
應該遵守以下命名規範:
i. 對於只在一個頁面使用的資源,就以該介面的名稱作為首碼
ii. 對於只在一個模組下多個頁面使用的資源,就以該模組的名稱作為首碼
iii. 對於在各個模組、各個頁面都有可能使用的資源,例如上導航、下導航,以common作為首碼
3) Java類中控制項對象
控制項類型縮寫 + 控制項的邏輯名稱(首字母大寫),如登入按鈕,可以命名為 btnLogin。
常用控制項的縮寫
| 控制項 |
縮寫 |
控制項 |
縮寫 |
| LayoutView |
lv |
EditText |
et |
| RelativeView |
rv |
Timepicker |
tp |
| TextView |
tv |
toggleButton |
tb |
| Button |
btn |
Progress |
pb |
| ImageButton |
img |
WdbView |
wv |
| ImageView |
iv |
RantingBar |
rb |
| CheckBox |
chk |
Tab |
tab |
| RadioButton |
rb |
ListView |
lv |
| DatePicker |
dp |
MapView |
mv |
4) Layout中控制項對象
與Activity中對應的控制項名稱保持一致。
如: Button btnLogin = (Button)findViewById(R.id.btnLogin);
5) string.xml中的常量
如: loginActivity_btnLogin_text
因為這些值大多在layout中的控制項上使用,所以以該常量所在的Activity名稱作為首碼,後面接控制項名稱,再後面就可以自由發揮了。
另一個中是使用在Java代碼中情景,
若和具體Activity相關,以所在Activity名稱作為首碼,和上面的一樣;
若涉及和公用模組和控制項相關,就以common_作為首碼。
更靈活的做法是,將其按照模組拆分為多個strings檔案,只要resoures 標籤下都是string標籤就可以了,編譯打包時會自動將同類檔案進行合并。
6) 常量命名
只能包含字母和底線_, 字母全部大寫,單詞之間用底線_隔開 例如: START_TIME
二、關於編碼規範
1) 需要分別類存放各種類
如:
|-src
|---com.example.demo
|---activity.others
|---activity.personcenter
|---adapter
|---db
依次還有: engine、 entity、 interfaces、 listener、ui、 utils 。。。
2) 要怎麼使用findViewById 語句?
3) Layout中的常量,要在資源strings.xml中定義
4) Layout中所有控制項的字型大小,都定義在dimens.xml中
5) 在Activity中,定義新的生命週期,從而將onCreate方法拆分為以下3部分:
initVariables: 初始設定變數(包括Intent上的資料和Activity內部使用的變數)
initViews: 載入Layout布局檔案,初始化控制項
loadData: 調用MobileAPI
6) 堅持使用fastJSON自訂實體來作為MobileAPI的資料載體
7) 頁面之間傳值,堅持使用Intent攜帶序列化實體資料的方式。禁止為了省事使用全域變數進行傳值的方式。
8) 為控制項添加事件,使用.setOnclickListener();
9) Activity中不要嵌套內部類,盡量都獨立出來
10)所有Adapter,都放在adapter這個包中; Adapter繫結資料,一律為ArrayList<自訂可序列化實體>; 在Adapter中使用 ViewHolder實體類。
11) 實體不要在不同模組間共用,但是可以在同一個模組下的不同頁面之間共用。
12) 為節省記憶體,請使用ArrayList<自訂實體>, 而不是HashMap
13) 圖片處理,請統一使用第三方組件ImageLoader 或 Fresco 來進行非同步載入
14) 什麼時候使用SharedPreference? 對於簡單的配置資訊,設定頁面的各種開關; 而對於複雜的對象,比如說User類,還是要儲存到本地檔案中為好。
15) 盡量使用ApplicationContext 代替 Context, 否則會引起記憶體流失。 當然,也不是任何地方 ApplicationContext都可以代替Context,使用不當會導致崩潰。
16) 資料類型轉換一定要進行校正。
17) 使用常量來代替枚舉。 枚舉的每一個值只能是一個整數,而沒有toString這樣的方法,所以不如在類中定義一個字串常量方便。
Android 命名規範和編碼規範