前言 看重構6.4Replace Temp with Query(以查詢取代臨時變數)中提到Replace Temp with Query往往是你運用Extract Method之前必不可少的一個步驟,局部變數會使代碼難以被提煉, 其中Extract Method是VS自帶的功能,我從VS200.....
前言
看重構6.4Replace Temp with Query(以查詢取代臨時變數)中提到Replace Temp with Query往往是你運用Extract Method之前必不可少的一個步驟,局部變數會使代碼難以被提煉, 其中Extract Method是VS自帶的功能,我從VS2003用到VS2015還從沒有用過這個功能,想想作為一個Neter也應該反思啊。
重構中指出當看到一個過長過大的函數需要很多註釋才能讓人理解就會把這段代碼放入一個獨立的函數中,那麼Extract Method則是最常用的重構手法之一,每個函數的粒度越細,則函數被覆用的機會就更大,其次函數被覆寫也會更容易些。
Extract Method
1、VS中自帶Extract Method功能,Resharper插件也包含該功能,如下示例代碼中CalculatePaintNeeded 方法中第一行代碼則可以用Extracct Method來提取到一個單獨的方法中。
public class ActivityProvider { const double PI = 3.14; private double CalculatePaintNeeded(double unit, double radius) { double area = PI*radius*radius; return area; } }
2、選中你想提取的代碼,右鍵Refactor--Extract--Extract Method 也可以選擇菜單欄Resharper中提供功能即可。提取後的代碼如下CircleArea。
public class ActivityProvider { const double PI = 3.14; private double CalculatePaintNeeded(double unit, double radius) { var area = CircleArea(radius); return area; } private static double CircleArea(double radius) { double area = PI*radius*radius; return area; } }