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

重構技巧:提取方法讓代碼更清晰

     編輯:關於C#

什麼是提取方法重構?

提取方法是重構中最常用、最基礎的技巧之一。當一個方法過於冗長,或者其中某段代碼需要靠註釋才能說明用途時,就是提取方法的最佳時機。將這些邏輯獨立成單獨方法,不僅能讓主流程一目了然,還能提升代碼的複用性與模組化程度。

重構前:一個過長的列印方法

以下是一個典型的「大方法」範例,負責列印欠款明細:

void PrintOwing() 
{
    double outstanding = 0;

    //print banner
    Console.WriteLine("**********");
    Console.WriteLine("***Owes***");
    Console.WriteLine("**********");
    //Calculate outstanding
    foreach(Order o in orders)
    {
        outstanding += o.Amount;
    }

    //print details
    Console.WriteLine("Name: " + name);
    Console.WriteLine("Amount: " + outstanding);
}

這個方法混雜了三種職責:列印標題、計算欠款總額、列印明細。雖然有註釋分隔,但閱讀與維護成本仍然很高。

重構後:職責分離的清爽代碼

應用提取方法重構後,主方法變成清晰的協調者:

void PrintOwing() 
{
    PrintBanner();
    double outstanding = GetOutstanding();
    PrintDetails(outstanding);
}

void PrintBanner() 
{
    Console.WriteLine("**********");
    Console.WriteLine("***Owes***");
    Console.WriteLine("**********");
}

void PrintDetails(double outstanding) 
{
    Console.WriteLine("Name: " + name);
    Console.WriteLine("Amount: " + outstanding);
}

double GetOutstanding() 
{
    double result = 0;
    foreach(Order o in orders)
    {
        result += o.Amount;
    }
    return result;
}

重構帶來的效益

  • 可讀性大增:主方法像目錄一樣描述流程,細節隱藏在具名方法中
  • 複用性提升:GetOutstanding() 可被其他地方呼叫
  • 測試更容易:每個小方法都能獨立單元測試
  • 修改風險降低:調整列印格式只需動 PrintBanner,不影響計算邏輯

什麼時機該提取方法?

  • 方法超過 20-30 行
  • 需要註釋才能解釋代碼塊用途
  • 同樣邏輯在多處出現
  • 方法包含多層抽象(如同時有高層流程與低層實作細節)

提取方法是重構的入門功夫,也是最高頻操作。養成「看到註釋就想提取方法」的習慣,代碼品質會自然提升。

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