在 Java 開發過程中,遵循良好的編碼規範不僅能提升程式效能,更能確保代碼的可讀性與可維護性。本文整理出六項國際軟體開發中廣泛認可的核心規則,涵蓋資源管理、執行緒安全、字面常量、文件註解、欄位初始化與國際化支援等關鍵領域,助你寫出更專業、健壯的 Java 代碼。
資料庫連接屬於稀缺資源,若因異常導致連接未釋放,將嚴重影響資料庫的並發效能。無論程式正常結束或拋出異常,都必須確保連接被正確關閉。
try {
Statement stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
try {
Statement stmt = con.createStatement();
} finally {
if (con != null && !con.isClosed()) {
con.close();
}
}
使用 finally 區塊可保證在任何情況下(含異常拋出)都能釋放連接。
Thread.resume()、Thread.stop()、Thread.suspend() 及 Runtime.runFinalizersOnExit() 等方法已被標記為棄用,因它們易導致死鎖與資料不一致。請改用 wait()/notify() 或 java.util.concurrent 套件提供的高階同步工具。
參考資源:
小寫 l 极易與數字 1 混淆,導致閱讀困難與潛在錯誤。
long temp = 23434l;
long temp = 23434L;
參考:Ken Arnold & James Gosling 著《The Java Programming Language》(第 2 版,Addison-Wesley, 1997)第 108 頁。
在 JSP 頁面頂端加入註解,說明頁面用途、作者、版本等資訊,有助於團隊協作與後期維護。此規則同樣適用於所有程式碼文件。
<%-- JSP 註解:說明頁面功能 --%>
未初始化的欄位(特別是靜態欄位)是潛在 Bug 溫床。建議在宣告時或建構子中給予明確初值。
public class CSI {
public CSI() { this(12); k = 0; }
public CSI(int val) { j = val; }
private int i = 5;
private int j;
private int k;
}
public class CSIFixed {
public CSIFixed() { this(12); }
public CSIFixed(int val) { j = val; k = 0; }
private int i = 5;
private int j;
private int k;
}
參考:AmbySoft Java Coding Standards
直接比對 'a'..'z' 或 'A'..'Z' 僅適用於英文環境。應使用 Character 類別提供的統一字元判斷方法。
boolean isLetter = (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
boolean isLetter = Character.isLetter(ch);
更多方法請參考 Java 國際化字元處理指南。
Date.toString() 輸出格式隨地區設定而異,不可用於面向使用者的顯示。應使用 DateFormat 依據 Locale 進行格式化。
Date today = new Date();
System.out.println(today.toString());
Locale locale = Locale.getDefault();
DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
Date today = new Date();
System.out.println(df.format(today));