首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 高效編程四大核心原則:命令行、復用、Servlet 映射、命名規範

     編輯:Java 相關知識

資深開發者在長期實踐中提煉的四大高效編程原則,涵蓋工具選型、代碼復用架構、Web 層設計模式、工程化命名規範,助你從「寫出代碼」進階到「寫出好代碼」。

原則一:命令行是專業開發者的利器,GUI 只是入門拐杖

  • 核心觀點:Maven/Gradle 構建、Git 版本控制、Docker 部署、K8s 運維、日誌分析、性能調優(jstack/jmap/arthas),全部在命令行完成效率最高。
  • IDE 定位:智能補全、重構、調試、靜態分析——IDE 的強項;但構建、部署、運維屬於命令行領域。
  • 實踐建議:
    1. 熟練掌握 Shell/Bash/PowerShell 基礎語法與管道操作。
    2. 將常用操作封裝為腳本/別名(如 alias mci='mvn clean install -DskipTests')。
    3. CI/CD 流水線腳本化,本地可跑通、線上同邏輯。

原則二:提取重複邏輯為獨立類,優先考慮無狀態靜態工具類

// 反例:多個 Service 中重複的日期格式化邏義
// 正例:提取為無狀態工具類
public final class DateUtils {
    private DateUtils() {} // 防止實例化
    
    public static String format(Date date, String pattern) {
        return new SimpleDateFormat(pattern).format(date);
    }
    
    public static Date parse(String str, String pattern) throws ParseException {
        return new SimpleDateFormat(pattern).parse(str);
    }
}

// 業務代碼調用
String today = DateUtils.format(new Date(), "yyyy-MM-dd");
  • 判斷標準:邏輯無副作用、無實例狀態、多處調用 → 靜態工具類。
  • 需實例狀態時:改為普通類,通過構造器注入依賴,由 IOC 容器管理單例 Bean。
  • 避免濫用繼承復用:BaseService 繼承鏈會導致耦合僵化,優先選擇組合/委派(如 Spring 的 @Autowired 注入工具 Bean)。

原則三:Web 層採用一 Servlet 多映射模式,消除 Controller 膨脹

問題背景

傳統做法:每個 JSP/頁面對應一個 Servlet → 類爆炸、維護困難、URL 分散。

解決方案:單 Servlet 多 URL 映射 + 內部分發

<!-- web.xml 配置 -->
<servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.example.web.UserServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/user/register.do</url-pattern>
    <url-pattern>/user/login.do</url-pattern>
    <url-pattern>/user/profile.do</url-pattern>
</servlet-mapping>
// UserServlet.java
@WebServlet("/user/*")  // Servlet 3.0+ 註解方式更簡潔
public class UserServlet extends HttpServlet {
    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        String uri = req.getRequestURI();  // 含 contextPath
        String action = uri.substring(uri.lastIndexOf('/') + 1); // register.do
        
        switch (action) {
            case "register.do": doRegister(req, resp); break;
            case "login.do":    doLogin(req, resp); break;
            case "profile.do":  doProfile(req, resp); break;
            default: resp.sendError(HttpServletResponse.SC_NOT_FOUND);
        }
    }
    
    private void doRegister(HttpServletRequest req, HttpServletResponse resp) { ... }
    private void doLogin(HttpServletRequest req, HttpServletResponse resp) { ... }
    private void doProfile(HttpServletRequest req, HttpServletResponse resp) { ... }
}

優勢

  • 相關業務聚合在一個 Servlet,內聚性高。
  • web.xml/註解集中管理 URL,便於審計與重構。
  • 共享前置/後置邏輯(權限檢查、日誌、編碼設置)無需 Filter 鏈重複配置。

現代替代:Spring MVC @Controller + @RequestMapping 本質同理,框架層面解決了分發與參數綁定。

原則四:嚴格命名規範,代碼即文檔

元素規範示例反例
類/介面/枚舉UpperCamelCaseUserService, OrderStatususer_service, User_Service
方法/變量/參數lowerCamelCasegetUserById, userNameGetUserById, user_name
常量UPPER_SNAKE_CASEMAX_RETRY_COUNTmaxRetryCount
包名全小寫、域名反序com.example.servicecom.Example.Service
文件/目錄kebab-case 或小寫user-service/, application.ymlUserService/, Application.YML

命名黃金法則

  1. 見名知意:calculateMonthlyPayment 優於 calc。
  2. 避免縮寫:除領域通用縮寫(DTO、VO、ID、URL),拒絕自造縮寫。
  3. 集合變量用複數:List<User> users,單數 user 表示單個元素。
  4. 布爾變量加前綴is/has/can/should:isValid, hasPermission。

總結:從規範到習慣,從習慣到文化

這四大原則看似簡單,貫徹執行需團隊共識與 Code Review 機制保障。建議:

  1. 將原則固化為 checkstyle.xml、.editorconfig、SonarQube Quality Profile。
  2. 新員工入職第一周必修《團隊編碼規範手冊》。
  3. 每季度回顧:隨機抽取 5 個 PR 檢查原則落地情況,持續改進。

高效編程不是技巧堆砌,而是降低認知負荷、減少決策疲勞、讓正確的事自然發生的系統性工程實踐。

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