工程命名:
這里直說 android 工程,android 的工程命名很簡單,這個項目叫什么,工程名我們就怎么叫,比如微信 - weixin。可以使用拼音,但是推薦盡量不使用拼音,另外全小寫
Snip20171213_50.png
如上圖,就是我們新建一個android項目時,我們填入的名字對應的位置。
根包名:
* 包名全部小寫
* 一級包名是頂級域名,通常為 com、edu、gov、net、org 等
* 二級包名為公司名
* 三級包名就是項目名
這符合上圖顯示的部分。
模塊
Android 發展到現今,模塊分離是一種通常,必須的做法。模塊有時候很大,又會分解成2級模塊,所以模塊的命名一定要有傳承性。
* 模塊名:
上級模塊名+本模塊名+module,中間使用_連接,沒有上級模塊就不要加上了,module表示模塊,可以根據喜好選擇加不加上,一般還是要加上。
* 包名:
在項目包名的基礎上,加上:
* 四級包名:上級模塊名
* 五級包名:本模塊名
* 沒有上級模塊的不用加
* 模塊分層:
通常我們按照以下幾個基本方面對模塊進行劃分:
* core(能力層。與具體業務無關,提供能力)
* base(基礎服務層。可以獨立存在,有且只有一個具有實際意義的服務,不依賴于其他的服務)
* business(業務服務層。依賴多個基礎服務,一般是一個流程性的服務)
- 參考以上的代碼結構,按功能分包具體可以這樣做:
com
└── domain
└── app
├── App.java 定義 Application 類
├── Config.java 定義配置數據(常量)
├── base 基礎組件
├── custom_view 自定義視圖
├── data 數據處理
│ ├── DataManager.java 數據管理器,
│ ├── local 來源于本地的數據,比如 SP,Database,File
│ ├── model 定義 model(數據結構以及 getter/setter、compareTo、equals 等等,不含復雜操作)
│ └── remote 來源于遠端的數據
├── feature 功能
│ ├── feature0 功能 0
│ │ ├── feature0Activity.java
│ │ ├── feature0Fragment.java
│ │ ├── xxAdapter.java
│ │ └── ... 其他 class
│ └── ...其他功能
├── injection 依賴注入
├── util 工具類
└── widget 小部件
統一依賴
module 中涉及到的依賴庫版本應該和主 app 保持一致,我們應該維護一個各模塊依賴基礎版本庫,當主項目摸個依賴版本過于低下時,我們也應該在主項目處修改依賴庫版本,而不是把依賴版本下方到每個模塊中,雖然 studio 工具可以較好的掃描,合并每個模塊的依賴庫版本然后取其中最高的,但是這是被動的,我們應該主動的發起依賴管理,通暢的做法,都是在根目錄中新建 一個config.gradle 腳本,然后在里面書寫依賴庫版本號,然后作為全局變量提供給依賴的 module使用:
- 大家可以看這篇:Android 開發之版本統一規范
- 也可以去看這篇:關于組件化開發使用 gradle統一配置版本,依賴
第三方庫
關于第三方開源庫的問題,我們應該使用那些優秀的,廣為人知的優秀的庫,那么優秀的庫怎么找呢,看這里: