如何提高Java程式碼質量-優雅的寫程式碼
寫在前面的話:
- 先讓程式碼跑起來再考慮優化,警惕過早優化程式碼
- 程式碼review很重要
- 閱讀程式碼的時間比寫程式碼的時間多得多
應該注意的規範
所有檔案的開頭都要有Java文件的註釋
儘量使類中所有的變數都是私有的,只能通過方法來訪問它們
常量應該全部大寫,單詞之間由下劃線分隔(例如,MAX_WORK_HOURS)
一行應該包含一個語句
在使用if-else、for、while、do和switch語句時應該使用大括號
避免一行中超過80個字元
陣列標識:要用"int[] packets",而不是"int packets[]",後一種永遠也不要用
不要在迴圈中構造和釋放物件
在任何可能的地方讓類為Final,標記為final的類不能被擴充套件
在任何可能的地方使用區域性變數,屬於方法呼叫部分的自變數和宣告為此呼叫一部分的臨時變數儲存在棧中
用程式碼有效處理記憶體溢位,OutOfMemoryError是由於記憶體不夠後普遍會遇到的問題
儘量使用懶載入,即在需要時才建立
try...catch只允許包裹當前會丟擲異常的程式碼塊,多餘的程式碼塊會影響資源回收。並且 try...catch 禁止在迴圈體內部使用
集合如果能估計到待新增的內容長度,請指定容器的初始長度
比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet
for迴圈的優化
//replace
for( int i = 0; i < collection.size(); i++) {
...
}
//with...
for( int i = 0, n = collection.size(); i < n; i++) {
...
}
迴圈儘量不要不斷建立物件引用,
//這種做法會導致記憶體中有count份Object物件引用存在,count很大的話,就耗費記憶體了
//replace
for (int i = 1; i <= count; i++){
Object obj = new Object();
}
//with...
Object obj =null;
for (int i = 1; i <= count; i++){
obj = new Object();
}
字串優化
String str1 = "str";
String str2 = "ing";
String str3 = "str" + "ing";//常量池中的物件
String str4 = str1 + str2; //在堆上建立的新的物件
String str5 = "string";//常量池中的物件
System.out.println(str3 == str4);//false
System.out.println(str3 == str5);//true
System.out.println(str4 == str5);//false
//使用append代替+
//replace
String str = "profit = revenue( “ + revenue +
”) - cost( “ + cost + ”)";
//with
String str = new StringBuffer().append( "profit = revenue( “).
append( revenue).append( “) - cost( “).
append( cost).append( “)“).toString();
字串和字串常量equals的時候將字串常量寫在前面,能避免NPE
String str = "aac";
//replace
str.equals("aac");
//with
"123".equals(str);
使用常量
常量宣告為
static final
,並以大寫命名在編譯期間就可以把這些內容放入常量池中,避免執行期間計算生成常量的值。另外,將常量的名字以大寫命名也可以方便區分出常量與變數同型別的多個常量請使用列舉
單一常量請使用 interface 宣告類包裹, interface 天生就是靜態公開的。
Spring 注入
Spring 注入方式注入請使用 Construction 方式進行注入,傳統的@Autowired注入方式容易產生 NPE 錯誤,因此 Spring 強烈建議使用 Construction 代替 Field 注入。如:
class Foo {
//replace
//@Autowired private SomeService someService;
//with
private final SomeService someService;
@Autowired public Foo(SomeService someService) {
this.someService = someService;
}
}
未完待續 - - -
參考連結:http://www.cnblogs.com/xrq730/p/4865416.html
程式設計是一門藝術,程式設計師是藝術家,其他人是碼農!!
相關文章
- 如何寫出優雅的程式碼?
- 如何用 SpringBoot 優雅的寫程式碼Spring Boot
- 【優雅寫程式碼系統】springboot+mybatis+pagehelper+mybatisplus+druid教你如何優雅寫程式碼Spring BootMyBatisUI
- 如何寫出優雅耐看的JavaScript程式碼JavaScript
- 如何寫出更優質的程式碼
- 如何做好質量管理、提高研發的程式碼質量?
- 寫出優雅的js程式碼JS
- golang如何優雅的編寫事務程式碼Golang
- 編寫更優雅的 JavaScript 程式碼JavaScript
- 我是如何將業務程式碼寫優雅的
- 助您寫出優雅的Java程式碼七點建議Java
- 優雅的程式碼
- 如何優雅的打包前端程式碼前端
- 編寫優雅程式碼的最佳實踐
- 如何用 es6+ 寫出優雅的 js 程式碼JS
- 看promise教你如何優雅的寫js非同步程式碼PromiseJS非同步
- 如何透過靜態分析提高iOS程式碼質量iOS
- 何為程式碼質量?——用腦子寫程式碼
- 如何編寫高質量的C#程式碼(一)C#
- 前端程式碼質量優化交流前端優化
- Java程式碼編寫、程式碼優化技巧總結Java優化
- 30個python教你學會優雅的寫程式碼Python
- 寫了多年的Java,直到看到Kotlin,原來程式碼可以如此優雅!JavaKotlin
- java如何讓程式碼變得優雅——自定義註解Java
- 在Java中使用函式正規化提高程式碼質量Java函式
- PHPer這樣寫程式碼也許更優雅PHP
- 我們應該如何編寫高質量的前端程式碼前端
- 良好的編碼習慣 —— 5 個提高程式碼質量的技巧
- 萬字長文詳解如何使用Swift提高程式碼質量Swift
- 如何優雅的替換掉程式碼中的ifelse
- 如何優雅地管理複雜前端程式碼前端
- 如何保障前端專案的程式碼質量前端
- 如何提升 Web 應用的程式碼質量Web
- 如何優雅地寫註釋:找到程式碼註釋的黃金平衡點
- 程式碼質量第 4 層 - 健壯的程式碼
- 程式碼質量第 3 層 - 可讀的程式碼
- 程式碼質量第 2 層 - 可重用的程式碼
- 有哪些可以提高程式碼質量的書籍推薦?