阿里Java高效代碼50例(學習總結)

如何編寫高效代碼?這是每個研發團隊都面臨的一個重大問題。《阿里Java高效代碼50例》(實際54例)來源於實際經驗,幫助我們成爲編寫高效代碼的軟件工程師。

 

類別

要點

常量&變量

直接賦值常量值,禁止聲明新對象

當成員變量值無需改變時,儘量定義爲靜態常量

儘量使用基本數據類型,避免自動裝箱和拆箱

如果變量的初值會被覆蓋,就沒有必要給變量賦初值

儘量使用函數內的基本類型臨時變量

儘量不要在循環體外定義變量

不可變的靜態常量,儘量使用非線程安全類

不可變的成員變量,儘量使用非線程安全類

對象&類

禁止使用JSON轉化對象

儘量不使用反射賦值對象

採用Lambda表達式替換內部匿名類

儘量避免定義不必要的子類

儘量指定類的final修飾符

方法

把跟類成員變量無關的方法聲明成靜態方法

儘量使用基本數據類型作爲方法參數類型,避免不必要的裝箱、拆箱和空指針判斷

儘量使用基本數據類型作爲方法返回值類型,避免不必要的裝箱、拆箱和空指針判斷

協議方法參數值非空,避免不必要的空指針判斷

協議方法返回值非空,避免不必要的空指針判斷

被調用方法已支持判空處理,調用方法無需再進行判空處理

儘量避免不必要的函數封裝

儘量指定方法的final修飾符

表達式

儘量減少方法的重複調用

儘量避免不必要的方法調用

儘量使用移位來代替正整數乘除

提取公共表達式,避免重複計算

儘量不在條件表達式中用!取反

對於多常量選擇分支,儘量使用switch語句而不是if-else語句

字符串

儘量不要使用正則表達式匹配

儘量使用字符替換字符串

儘量使用StringBuilder進行字符串拼接

不要使用""+轉化字符串

數組

不要使用循環拷貝數組,儘量使用System.arraycopy拷貝數組

集合轉化爲類型T數組時,儘量傳入空數組T[0]

集合轉化爲Object數組時,儘量使用toArray()方法

集合

初始化集合時,儘量指定集合大小

不要使用循環拷貝集合,儘量使用JDK提供的方法拷貝集合

儘量使用Arrays.asList轉化數組爲列表

直接迭代需要使用的集合

不要使用size方法檢測空,必須使用isEmpty方法檢測空

非隨機訪問的List,儘量使用迭代代替隨機訪問

儘量使用HashSet判斷值存在

避免先判斷存在再進行獲取

異常

直接捕獲對應的異常

儘量避免在循環中捕獲異常

禁止使用異常控制業務流程

緩衝區

初始化時儘量指定緩衝區大小

儘量重複使用同一緩衝區

儘量設計使用同一緩衝區

儘量使用緩衝流減少IO操作

線程

在單線程中,儘量使用非線程安全類

在多線程中,儘量使用線程安全類

儘量減少同步代碼塊範圍

儘量合併爲同一同步代碼塊

儘量使用線程池減少線程開銷

 

示例代碼,詳見原文:https://blog.51cto.com/13851865/2462569

 


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