程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 測試中的代碼分享~將可以合並的方法去合並Func不賴

測試中的代碼分享~將可以合並的方法去合並Func不賴

編輯:C#入門知識

在面向對象的設計中,我們經常會談到“重構”,而重構之中有個叫合並方法的,就是將多個方法干的事類似,或者說,方法體的長向很像,那麼,我們需要去考慮,將它們進行抽象!

原來的代碼:

         
         
         
         
         
          AddOpreation( a,  sum =  ( i = (a < b ? a : b); i <= (a > b ? a : b); i+++= 
         
         
         
         
          AddInvolutionOpreation( a,  sum =  ( i = (a < b ? a : b); i <= (a > b ? a : b); i+++= i *

可以看到這兩個方法的方法體基本相同 ,只是在累加時第一個是原數累加,第二個方法是原數的乘方作累加,對於上面的代碼,我們可以進行再次抽象,將不相同

的代碼邏輯提出來,我們知道.net 3.5有了Action和Func兩個委托,事實上,這兩個委托是微軟為我們封裝好的,原來就是因為它們常用,所以,人家直接給封裝好了,這一點,是值得我們去學習的,有人說,微軟的東西升級快,但我要說的是,它的升級不是語言本身的升級,而是為了讓開發人員更方便的使用它,讓開發人員

的代碼寫出來更可讀,讓代碼的藝術性更強,這是我想說的。

下面是把變化的部分抽象之後的結果,看代碼:

         
         
         
         
         
         
          BothIntegerOpreation(Func<, > func,  a,  sum =  ( i = (a < b ? a : b); i <= (a > b ? a : b); i+++=

而在調用的時間,我們將具體的實現邏輯以參數的形式傳遞進來,有人說,委托用不到,但我想說,那是你對委托還不夠了解!

            Func<, > funcAdd = (a) => {  a; };
             res1 = BothIntegerOpreation(funcAdd, ,  res2 = BothIntegerOpreation((a) => {  a * a; }, , );
            Console.WriteLine(res1.ToString() + res2.ToString());

結果如下:

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved