国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

C#在靜態(tài)導入方面與Java有什么區(qū)別?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-28 16:46:46

       C#不如Java的地方:靜態(tài)導入

  靜態(tài)導入

  優(yōu)點

  前言就說到這兒,現(xiàn)在進入今兒這篇文章的正題:靜態(tài)導入(static import)。

  先看下面這段示例代碼:

  public class SayHelloTest{

  @Test

  public void should_say_hello_when_given_your_name(){ gotoPage("hello"); input("name","yuyijq");

  click("sayButton");

  assertThat(helloPage.getLabel(),is("hello yuyijq"));

  }

  }

  這是一段典型的功能測試代碼。對于功能測試來說,關鍵的就是要模擬用戶場景,而不涉及技術細節(jié),用領域的語言來表達出測試。上面的測試用很清晰的步驟表達出了測試的意圖,要注意的是這里的gotoPage,input,click以及assertThat方法都不是SayHelloTest類的實例方法,都是定義在別的類甚至是第三方框架中的靜態(tài)方法。通過Java的靜態(tài)導入特性,使得現(xiàn)在代碼的可讀性更高:

  import static com.cnblogs.yuyijq.functionalTest.gotoPage;

  弊端

  通過靜態(tài)導入,我們可以去掉類名的前綴,這樣就可以將代碼寫得更自然,更像是在描述一件事兒。但靜態(tài)導入也并不是沒有缺點。在軟件開發(fā)中,很多特性適當?shù)氖褂枚己芎茫且坏┦褂眠^度就有可能變成壞事,這就是那個名言:不要拿著錘子,就把啥都當釘子。請看下面的代碼:

  map.get(MOST_VIEWED.toString());

  map.get(LAST_VIEWED.toString());

  map.get(IS_LAST_ARTICLE.toString());

  map.get(IS_SHOW_PICTURE.toString());

  咋一看還以為這些MOST_VIEWED什么的全部是常量,但最后發(fā)現(xiàn)這些都是枚舉PortalOptions里的項,都是通過靜態(tài)導入導進來的。但由于沒了PortalOptions這個具有說明信息的枚舉名作為前綴,丟失了很多信息,造成這段代碼不是很容易看懂,不知道m(xù)ap.get出來的到底是什么。代碼雖然短了很多,但是如果加上PortalOptions,那么就能很直觀的直到我們需要從這個map里獲得PortalOptions相關的東東。

  在C#里畫瓢

  好的東西是要學習的,那我們?nèi)绾卧贑#里照樣畫個瓢呢?上#目前還不支持這種靜態(tài)導入,我也沒想到什么好法子能畫這個瓢。在C#里不要類名或實例名這個前綴,那除非這個方法是本類的方法,但我們肯定不可能為了使用這樣的東東,就給每個類添加這些方法,不過C#里有一個擴展方法特性,我們看看是不是能用擴展方法來畫這個瓢:

  public static class UnitTestExtensions

  {

  public static T mock(this object o,Type mockType)

  { return (T)NMock.Mock(mockType); }

  }

  由于我們是給object類擴展的方法,所以在所有的類中都可以像是自己的方法一樣使用,也就可以寫下下面這樣的代碼了:

上一篇:Java位運算符的操作原理
下一篇:JDBC連接DB2數(shù)據(jù)庫問題及解決方法?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權所有

湘ICP備14017520號-3

關注我們
在線咨詢
嘿,我來幫您!
东阿县| 河西区| 潢川县| 昆明市| 吴忠市| 开阳县| 兰溪市| 桑日县| 桃园县| 大化| 阿勒泰市| 喀喇沁旗| 临汾市| 安远县| 台江县| 乃东县| 万全县| 宁德市| 叶城县| 鹤山市| 霸州市| 遵义市| 涞水县| 嘉义市| 南溪县| 闻喜县| 靖安县| 唐海县| 嵊州市| 铅山县| 宜春市| 镇原县| 永福县| 永丰县| 宕昌县| 长兴县| 台江县| 栾城县| 利津县| 兰州市| 上高县|