轉載請保留原文鏈接: http://dashidan.com/article/java/basic/21.html
清晰的代碼結構, 就像讀一個優美的文章,賞心悅目.這個正是我們追求的, 代碼邏輯的美, 只有程序員懂.
① 寫代碼前的準備
② 一些建議
- 必要的註釋是代碼生命力的重要支撐.
- 需要改進的地方, 或者沒完成的部分採用//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%左右.