降低代碼重復(fù)度:我所謂的代碼重復(fù)指的不僅僅是多行一模一樣的代碼,同時也包括一些重復(fù)復(fù)制或是沒必要的一些代碼,如以下下代碼:
復(fù)制代碼
1 public void 重復(fù)代碼示例(int? 參數(shù)一)
2 {
3 if (參數(shù)一 != null)
4 {
5 //處理代碼....
6 }
7 else
8 {
9 參數(shù)一 = null;
10 //處理代碼.....
11 }
12
13 //處理代碼.....
14
15 }
復(fù)制代碼
可能有的朋友在第一眼看到這段代碼時會說,這個沒什么問題啊 ,哪有什么重復(fù)呀?真的就沒有重復(fù)么?這段代碼真的沒有什么問題么?
那么請問下這個else里面的" 參數(shù)一 = null;" 這行代碼有意義么?畢竟只有"參數(shù)一"為空時才會滿足else分支條件,才會進入這個分支,也就是說你已經(jīng)知道啦這個為null的時候又去給他賦值為null,這個算不算是重復(fù)呢?
可能有的朋友會說誰會寫這樣的代碼呀,其實這種代碼是我在項目中看到過類似的代碼的,
讓代碼重構(gòu)漸行漸遠(yuǎn)系列(2)——降低代碼重復(fù)度
。其實寫出來這樣的代碼也沒什么好奇怪的,因為有時候順著業(yè)務(wù)邏輯走時就真的有可能會遇到這種問題的。簡單來說,上面的示例代碼可以重構(gòu)成如下代碼:
復(fù)制代碼
1 public void 重復(fù)代碼示例(int? 參數(shù)一)
2 {
3 if (參數(shù)一 != null)
4 {
5 //處理代碼....
6 }
7
8 //處理代碼.....
9
10 }
復(fù)制代碼
接下啦就讓我們看看我們比較熟悉的重復(fù)代碼形式吧:
復(fù)制代碼
public void 重復(fù)代碼示例方法一(string 參數(shù)一)
{
TestModel model = new TestModel();
if (!string.IsNullOrEmpty(參數(shù)一))
{
model.Name = 參數(shù)一;
model.Age = 0;
model.Creator = "當(dāng)前用戶";
model.CreateTime = DateTime.Now;
//邏輯代碼
}
}
public void 重復(fù)代碼示例方法二(int? 參數(shù)二)
{
TestModel model = new TestModel();
if (參數(shù)二 != null)
{
model.Age = 參數(shù)二.Value;
model.Creator = "當(dāng)前用戶";
model.CreateTime = DateTime.Now;
//邏輯代碼
}
}
復(fù)制代碼
復(fù)制代碼
public class TestModel
{
public string Name { set; get; }
public int Age { set; get; }
public string Creator { set; get; }
public DateTime CreateTime { set; get; }
}
復(fù)制代碼
那么我是否也可以重構(gòu)一下以便減少重復(fù)代碼呢?我想你也不想重復(fù)寫代碼吧!
復(fù)制代碼
1 public void 重復(fù)代碼示例方法一(string 參數(shù)一)
2 {
3 TestModel model = new TestModel();
4 if (!string.IsNullOrEmpty(參數(shù)一))
5 {
6 model.Name = 參數(shù)一;
7 model.Age = 0;
8 NewMethod(model);
9 //邏輯代碼
10 }
11
12 }
13
14 public void 重復(fù)代碼示例方法二(int? 參數(shù)二)
15 {
16 TestModel model = new TestModel();
17 if (參數(shù)二 != null)
18 {
19 model.Age = 參數(shù)二.Value;
20 NewMethod(model);
21 //邏輯代碼
22 }
23
24 }
25
26 private static void NewMethod(TestModel model)
27 {
28 model.Creator = "當(dāng)前用戶";
29 model.CreateTime = DateTime.Now;
30 }
復(fù)制代碼
這么一來,如果以后業(yè)務(wù)改變了,需要修改創(chuàng)建人和時間時我們就只需要修改 NewMethod(TestModel model) 這一個方法了,而不用修改原先的兩處了,是不是相對的減少了代碼重復(fù)度的同時,也便于維護呢?
當(dāng)然啦,由于本人能力有限,以上示例不是特別恰當(dāng),但是我想說的是這種思想,減少重復(fù)代碼,減低代碼重復(fù)度的思想,
電腦資料
《讓代碼重構(gòu)漸行漸遠(yuǎn)系列(2)——降低代碼重復(fù)度》(http://m.oriental01.com)。還是那句話,如果我們在寫代碼的時候就考慮到了這些我們還需要再花時間做此種重構(gòu)么?代碼重構(gòu)怎能不漸行漸遠(yuǎn)呢?