- 深切體會到,一段可讀性代碼對於團隊的重要性
- 糟糕的代碼會增加設備的資源開銷
- 不規範的代碼會增加團隊間的溝通成本
故在此文章中進行思考與總結
Java
1、儘量少使用狀態標誌位,對使用到的標誌位,一定要說明在各種場景下的作用
- Android Application層,Java主要負責控制程序的邏輯
- 常見的就是定義一個int、boolean標誌位,配合if、switch控制流程
- 在程序中總是會看到有些複雜的模塊,各種標誌位,有些標誌位的作用頁甚至重合了
- 在情況複雜的時候,標誌位之間也可能會衝突,需要組合考慮置位問題
- 多線程也會有影響
- 在理解、設計程序的時候,總是惦記着這些狀態位,怪煩的
- 在記錄程序狀態時,儘量複用已有的標誌位
- 對影響程序邏輯走向的標誌位進行整理,彙總
- 可以抽象一個Status狀態類去管理
- 對於每種狀態位都要說清楚各種情況下的作用
- 遇見的坑也要寫出來
2、方法參數儘量簡潔、準確
我就是想啓動一個Activity而已…
- 傳遞參數的目的在於傳遞信息,方法內部如果拿到的是一個複雜數據類型,需要轉換
- 例如上圖的
List<Good> goodList
,其實方法內部只需要集合元素數量 action
和mode
作用重合
- 參數列表儘量簡短
- 參數設計儘量準確
3、儘量使用 if-return 代替 if-else 結構
- 使用
if-else
控制邏輯分支時,經常會導致代碼不斷縮進 - 不寫註釋,就更難於理解邏輯
- 對程序的理解,就是“至頂向下,逐步細化”的過程
- 對於分支情況的拆分、彙總、處理,有助於理解程序,加強程序健壯性
4、不要對方法進行多次調用,儘量使用變量保存方法返回值
- 方法的執行對應於虛擬機Java棧中棧幀的出棧、入棧等指令
- 多次調用相同方法,多次執行出棧、入棧指令,會造成多餘的開銷
- 依賴於方法的返回結果,容易造成NullPointer問題
- 使用變量保存方法執行結果
- 對變量執行判空,避免NullPointer問題
5、不要鏈式調用方法來實現邏輯
- 項目中總是見到這樣的鏈式調用,甚至更長
- 其穩定性是建立在每一個方法的執行結果不爲空的情況下
- 其中某一個環節沒有做判空處理,就會crash
- 對方法的執行結果,使用包裝器類Boolean、Integer來保存,這樣可以兼容方法返回爲空的情況
- 對方法調用的結果進行判空
6、switch分支需要使用註釋
- switch每一條分支都要用註釋標明作用
- 包括default分支
XML
1、每個節點都需要使用註釋
- 項目中UI複雜的頁面XML結構,也許比這還要複雜
- 接手此界面,只有通過配合控件id來理解結構
- 實現、優化UI也要建立在理解透徹當前UI的前提下
- 配合註釋,對於控件的分層結構、任務職責就可以快速地梳理、歸納
2、節點Id中可以加入當前文件名的一部分
- 經常有不同組件使用同一id的情況,例如支付頁、購物車頁面的提交按鈕
- 雖然不會有編譯問題,但是能規範去寫,爲什麼要偷這麼幾秒鐘的懶呢?
- 控件id中前部分,使用當前文件名的一部分
- 這種方式不適合公共組件