Package com.jxlife; // 錯誤1: package 全小寫
import java.math*; // 錯誤2: 缺少 .*
import com.jxlife.pa.policy; // 錯誤3: 類名應大寫 Policy
impost com.jxlife.pa.policyDAO; // 錯誤4: 拼寫 impost -> import
public class ICalculatepremium { // 錯誤5: 接口命名 I 開頭,實現類不應加 I
public ICalculatepremium() {}
public BigDecimal calculatepremium(Long policyId, String calculateType) { // 錯誤6: 方法名駝峰 calculatePremium; 參數 String 大寫
BigDecimal a = null; // 錯誤7: null 小寫
Policy policy = PolicyDAO.load(policyId); // 錯誤8: load 方法調用語法錯誤 .longvalue()
for (int i = 0; i <= policy.getProducts().size(); i++) { // 錯誤9: <= 越界,應 < ; size() 應提取到循環外
PolicyProduct p = policy.getProducts().get(i); // 錯誤10: 類名 PolicyProduct 大寫; 變量 p 應在循環外聲明
a = a.add(p.getPremium());
}
return a; // 錯誤11: return 小寫
}
}
| 類別 | 錯誤點 | 規範/修正 | 嚴重級 |
|---|---|---|---|
| 語法/編譯 | package 大寫、import 缺 .*、impost 拼寫、null/return 大小寫 | Java 關鍵字全小寫,包名全小寫,類名大寫開頭 | 🔴 阻塞編譯 |
| 命名規範 | 類 Policy/policy 混用、方法 calculatepremium、變量 θ (非 0)、接口類加 I 前綴 | Google Java Style / Alibaba Java 開發手冊:類 PascalCase、方法/變量 camelCase、常量 UPPER_SNAKE | 🟡 可讀性/維護性 |
| 邏輯/性能 | 循環條件 <= 越界、size() 放循環內、對象創建放循環內、DAO 調用語法錯 | 循環不變量外提、邊界 < size、對象復用、正確 API 調用 | 🔴 運行時崩潰/性能 |
| 架構設計 | ICalculatepremium 命名誤導 (I 前綴通常表示 Interface) | 實現類命名:CalculatePremiumService / PremiumCalculatorImpl | 🟡 語義混淆 |
package com.jxlife.premium;
import java.math.BigDecimal;
import com.jxlife.pa.Policy;
import com.jxlife.pa.PolicyProduct;
import com.jxlife.pa.PolicyDAO;
public class PremiumCalculatorImpl implements PremiumCalculator {
@Override
public BigDecimal calculatePremium(Long policyId, String calculateType) {
Policy policy = PolicyDAO.load(policyId); // 假設 DAO 修正為靜態方法或注入實例
if (policy == null) return BigDecimal.ZERO;
List products = policy.getProducts();
BigDecimal total = BigDecimal.ZERO;
for (PolicyProduct product : products) { // 增強 for 循環,避免索引越界
if (product != null && product.getPremium() != null) {
total = total.add(product.getPremium());
}
}
return total;
}
}
代碼規範不是「潔癖」,而是**降低認知負荷、預防運行時災難、支撐團隊協作**的基礎設施。養成「寫碼即檢查、提交必過檢」的肌肉記憶,是專業工程師的分水嶺。