統一的程式碼風格能顯著提升團隊協作效率、降低維護成本、減少認知負擔。本文整理業界通用的 Java 程式碼規範,涵蓋命名慣例、檔案結構、格式化、程式設計技巧、效能與可攜性等面向,供專案團隊參考落地。
| 元素 | 規則 | 範例 |
|---|---|---|
| Package | 全小寫,單字或縮寫 | com.company.project.module |
| Class / Interface | PascalCase,名詞 | UserService, Serializable |
| Method | camelCase,動詞開頭 | getUserById(), calculateTotal() |
| Variable / Parameter | camelCase,名詞 | userName, maxRetryCount |
| Constant (static final) | UPPER_SNAKE_CASE | DEFAULT_TIMEOUT_MS |
| Array | type[] variableName | byte[] buffer; (非 byte buffer[];) |
參數命名建議:與對應欄位同名,配合 this.field = field 明確語意。
*public class Name extends Base implements Interfacestatic final)public → protected → package-private → private 排序toString():每個類別必須實作main():放置檔案末尾(若有)if (cond) { 同行開頭,} 獨立一行並對齊對應 {if (cond);方法呼叫無空格 method(arg);運算子前後各一空格public int getId() { return id; },邏輯區塊禁止單行throw new Exception() 或 throw new RuntimeException() 無語意main() 或執行緒進入點統一捕獲並記錄完整堆疊try-with-resources (JDK 7+):try (FileOutputStream fos = new FileOutputStream(file)) {
project.save(fos);
} // 自動 close()Cloneable 並覆寫 clone() 深拷貝可變欄位final**;改用 Javadoc 標註 @apiNote Not designed for extensionprivate,必要時 protected 供子類存取StringBuilder** (單執行緒) 或 StringBuffer (多執行緒)String s += "x" 產生大量暫存物件java.util.concurrent 高階併發工具 (ConcurrentHashMap, AtomicInteger, Lock 等)enum)public enum Color {
BLACK(0, 0, 0), RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255), WHITE(255, 255, 255);
private final int r, g, b;
Color(int r, int g, int b) { this.r = r; this.g = g; this.b = b; }
public int getRGB() { return (r << 16) | (g << 8) | b; }
}
原生 enum 提供型別安全、單例保證、可實作介面、支援 switch,完美替代舊有 static final 常數模擬法。
JScrollPane 會失效,須用 java.awt.ScrollPaneJInternalFrame 內避免放置 AWT 元件java.util.logging 或 SLF4J + Logback/Log4j2,**禁止 System.out.println**ERROR (系統錯誤)、WARN (潛在問題)、INFO (關鍵流程)、DEBUG (開發診斷)System.lineSeparator() 或 println(),避免硬編碼 \nPrintWriter 取代已棄用的 PrintStream@todo Optimize: O(n²) → O(n log n)formatter.xml (Eclipse/IntelliJ) 統一格式化git pre-commit hook 執行格式化與靜態分析規範的價值在於「被遵守」。從命名、格式化、例外處理、併發安全到效能意識,每一項細節都關乎長期維護成本。建議團隊依專案屬性裁剪本指南,建立輕量級《專案程式碼風格指南》,並透過工具自動化強制執行,讓程式碼真正像「同一人所寫」。