對Android程序代碼規範的一些思考

  • 深切體會到,一段可讀性代碼對於團隊的重要性
  • 糟糕的代碼會增加設備的資源開銷
  • 不規範的代碼會增加團隊間的溝通成本

故在此文章中進行思考與總結



Java

1、儘量少使用狀態標誌位,對使用到的標誌位,一定要說明在各種場景下的作用

在這裏插入圖片描述

  • Android Application層,Java主要負責控制程序的邏輯
  • 常見的就是定義一個int、boolean標誌位,配合if、switch控制流程
  • 在程序中總是會看到有些複雜的模塊,各種標誌位,有些標誌位的作用頁甚至重合了
  • 在情況複雜的時候,標誌位之間也可能會衝突,需要組合考慮置位問題
  • 多線程也會有影響
  • 在理解、設計程序的時候,總是惦記着這些狀態位,怪煩的

在這裏插入圖片描述

  • 在記錄程序狀態時,儘量複用已有的標誌位
  • 對影響程序邏輯走向的標誌位進行整理,彙總
  • 可以抽象一個Status狀態類去管理
  • 對於每種狀態位都要說清楚各種情況下的作用
  • 遇見的坑也要寫出來

2、方法參數儘量簡潔、準確

我就是想啓動一個Activity而已…

  • 傳遞參數的目的在於傳遞信息,方法內部如果拿到的是一個複雜數據類型,需要轉換
  • 例如上圖的List<Good> goodList,其實方法內部只需要集合元素數量
  • actionmode作用重合

  • 參數列表儘量簡短
  • 參數設計儘量準確

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中前部分,使用當前文件名的一部分
  • 這種方式不適合公共組件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章