21.Java編碼優化

21.Java編碼優化
轉載請保留原文鏈接: http://dashidan.com/article/java/basic/21.html

清晰的代碼結構, 就像讀一個優美的文章,賞心悅目.這個正是我們追求的, 代碼邏輯的美, 只有程序員懂.

① 寫代碼前的準備

  1. 編碼思想
    寫出更優雅的代碼,超越實現功能的要求.熟悉常用的設計模式.
  2. 編碼規範
    java編碼規範.
  3. 工具統一
    多人開發同一個項目時需要注意:
    • 同樣版本的IDE
    • 同樣版本的SKD
    • 同樣的代碼格式化配置

② 一些建議

  • 必要的註釋是代碼生命力的重要支撐.
  • 需要改進的地方, 或者沒完成的部分採用//TODO註釋.方便查漏補缺.
  • 合理的繼承關係.
  • 功能模塊化.
  • 清晰合理的目錄結構, 根據功能模塊分類明確.
  • 合理利用成熟的設計模式.
    例如:單例模式, 工廠模式, 觀察者模式等.
  • 靜態代碼檢查, 幫你做一些基本的邏輯檢查.
    例如: Intelij IDEA的findBugs插件, PWD
  • 效率優化,通過效率檢測工具.
    例如:jprofile,jmap,jstack等.
  • 有繼承關係的類,能採用子類時,採用子類對象,省去父類強轉的過程.
  • 合理的log記錄,方便debug.
    例如: log4j
  • 清理無效的代碼和註釋.
  • 儘量降低多維集合維度.
    例如:二維數組,第二維長度不超過3時, 儘量採用多個一維數組.
  • 縮小變量作用域.
    只有本類調用的方法和變量修飾爲private.方法內的變量,用到時創建.
  • 方法複用.
    Intelij IDEA中有個很棒的提示, 如果代碼重複, 會在編輯器中提示.可以用這個功能檢查重複代碼.
  • 執行運算前判斷參數是否合法.
    例如:return 的合理應用,不合法return.
  • 創建工具類, 統一存放static方法,方便管理static方法.
  • final的合理應用, 避免數據誤操作.
    例如:從配置文件讀取的變量不需要的時候,設置爲final,避免誤操作修改.
  • 集合類操作的封裝.
    儘量採用泛型和接口來提高代碼複用.
  • 高頻次使用變量的臨時記錄.
    例如:同一個方法內多次使用系統時間, 可以採用局部變量記錄, 執行時用變量結果不用重複計算, 提高效率.
  • 降低定長集合的維度, 儘量減少循環嵌套, 降低集合維度.
ArrayList<Item> items = new ArrayList()
// 改爲定義3個對象
Item item0;
Item item1;
Item item2;
  • 複雜的判斷條件拆分
    如果一個判斷語句太複雜,可以將其中的部分拆出來作爲單獨的參數.降低表達式複雜度.
  • 刪除魔鬼數,採用常量定義.
public static final int THIS_IS_VALUE = 0;
  • 移除不必要的局部變量, 降低無效代碼量.
int type = obj.getType();
if(type > 0){
}
// 可以改爲
if(obj.getType() > 0){

}
  • if情況超過3個時,切換爲switch,switch情況小於3個時,切換爲if.
  • switch語句中,養成case和break對應的習慣,防止少寫break,導致bug.
  • 整合只調用一次, 並且代碼量小於20行的方法到同一個方法中.
  • 一個對象持有另一個對象的多個屬性時,修改爲持有對象,不重新聲明變量及賦值.提高效率, 降低內存消耗.
  • 互斥的if情況採用if{}else{}的結構,不採用if{} if{}的方式.
  • 遍歷HashMap採用entrySet替換keySet.
    Entry 對象帶有value屬性,keySet遍歷還需要get一次,Entry效率高50%左右.

③ 相關文章

Java從入門到精通索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章