首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 代碼規範大檢查:11 個關鍵錯誤從命名約定到邏輯缺陷全解析

     編輯:程式設計綜合問答

代碼現場 (匿名化)


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 小寫
    }
}

11 大錯誤分類解析

類別錯誤點規範/修正嚴重級
語法/編譯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;
    }
}

工程化檢查清單 (Checkstyle/SpotBugs/PMD)

  • ✅ 命名規約檢查
  • ✅ 循環邊界/空指針/資源關閉靜態分析
  • ✅ 圈複雜度控制 (方法 < 10)
  • ✅ 單元測試覆蓋率 > 80%

代碼規範不是「潔癖」,而是**降低認知負荷、預防運行時災難、支撐團隊協作**的基礎設施。養成「寫碼即檢查、提交必過檢」的肌肉記憶,是專業工程師的分水嶺。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved