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

Java 方法拆分與合併:功能等價但結構不同

     編輯:程式設計綜合問答

兩種寫法比較

寫法一:分散方法寫法二:合併方法
public void getBenjin() {
    if (benjin.getText() != null) 
        benjinD = Double.parseDouble(benjin.getText());
}
public void getLilv() { ... }
public void getShijian() { ... }
public void getNumber() {
    if (benjin.getText() != null) 
        benjinD = Double.parseDouble(benjin.getText());
    if (lilv.getText() != null) 
        lilvD = Double.parseDouble(lilv.getText());
    if (shijian.getText() != null) 
        shijianI = Integer.parseInt(shijian.getText());
}

功能上完全等價

兩者執行後,`benjinD`、`lilvD`、`shijianI` 獲得相同值。差異僅在**程式碼組織**。

優缺點分析

維度分散方法合併方法
**單一職責**✅ 每方法只做一件事❌ 一方法處理三欄位
**可複用性**✅ 可單獨呼叫 `getBenjin()`❌ 必須全跑
**可測試性**✅ 易單元測試❌ 需準備三欄位資料
**呼叫便利性**❌ 需呼叫三次✅ 一次呼叫完成
**程式碼行數**較多較少

最佳實踐建議

  1. 預設採用分散方法:符合 SOLID 原則,維護性高。
  2. 提供合併入口**:若確有「一次性讀取所有」需求,可保留 `getNumber()` 內部呼叫三個細方法:
    public void getNumber() {
        getBenjin();
        getLilv();
        getShijian();
    }
  3. 空值檢查簡化**:`getText()` 永不回傳 `null`(Swing 保證回傳 `""`),故 `if (benjin.getText() != null)` 恆真,可簡化為:
    String txt = benjin.getText().trim();
    if (!txt.isEmpty()) benjinD = Double.parseDouble(txt);
  4. 異常處理**:`parseDouble` 可能拋 `NumberFormatException`,建議 `try-catch` 或預先驗證。

結論

功能無差別,**分散方法結構更好**。若需合併呼叫,提供一個委派方法即可,不要犧牲模組化。

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