伸进女同桌乳沟里摸爽了,小雪解开乳罩给老杨摸,少妇被按摩师摸高潮了,亲嘴扒胸摸屁股激烈视频,强摸秘书人妻大乳BD,摸BBB揉BBB揉BBB视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> Java技術(shù) >> 文章正文

私有方法、測試驅(qū)動開發(fā)與優(yōu)秀設(shè)計

        有人說“TDD(測試驅(qū)動開發(fā))可以帶來優(yōu)秀的設(shè)計”,也有人說“TDD會對設(shè)計有負(fù)面影響”。如果有個具體例子的話,討論起來會實際得多,所以下面我們來看一下私有方法以及它與優(yōu)秀設(shè)計、可測試性的關(guān)系——這種對立觀點的一個實例。
  Szczepan Faber在博客中寫道,私有方法是一種反模式:
  自從TDD誕生之日起,私有方法似乎就有了壞味道。被測試浸染的開發(fā)者總想尋找測試私有方法的辦法。嗯……這顯然是很困難的,所以問題就從“如何”變成了“為何”:為何要測試私有方法?大多數(shù)TDDers都會立刻回答說:別這么干。于是TDD又改變了我們構(gòu)建軟件的方式,對私有方法進行了重新評估 
      Jay Fields在博客上描述了在ruby中測試私有方法的一種通用方式:
……我很少測試私有方法。我更傾向于通過public API來進行測試。不過偶爾也有這種時候,如果你可以給一兩個私有方法寫點測試用例的話,日子就可以過的容易一些。
  Michael Feathers在去年的The Deep Synergy Between Testability and Good Design一文中指出,TDD可以帶來優(yōu)秀的設(shè)計,而反過來想,那些不可測試的代碼應(yīng)該引起我們的深思:
  在我編寫測試時,如果覺得有強烈的沖動促使我去測試一個私有方法,我就會把它看作一種暗示。它告訴我,我的類已經(jīng)被封裝得趨近于封閉了,測試代碼無法再通過公共接口來“理解”這個類的行為。我順從了這個暗示的召喚,重新構(gòu)建了代碼。通常我都會把這個私有方法(可能還有一些相關(guān)的方法)挪到一個新的類里面,在那里它不再是私有,可以讓測試代碼訪問。

  以上種種想法,都傾向于不鼓勵使用私有方法,在天平的可測試性一端加入更多砝碼。但它們并不是唯一的聲音。實際上在我們所能看到的有關(guān)面向?qū)ο箝_發(fā)的觀點中,很多都是支持少用一些類,極盡所能使用封裝。在public API中只暴露最小的API集合,就會將耦合降低到最小。David West在Object Thinking一書中,引用了Lorenz和Kidd在Object Oriented Software Metrics書中的論述:

  一個應(yīng)用程序應(yīng)該最多包括40個故事,100個類。 
  應(yīng)用程序所屬的整個業(yè)務(wù)領(lǐng)域不應(yīng)該需要超過1000個類來完成。 
  每一次迭代后都該扔掉25-30%的代碼。 
  每個類的職責(zé):平均是7個。 
  每個類的方法數(shù):平均是12個。 
  每個方法的代碼行數(shù):平均是15個。 
  需要進行注釋的代碼行數(shù)百分比:60。 
  case語句的數(shù)量:平均為0。 
  如果私有方法確實是壞味道,需要把它們挪到自己所應(yīng)歸屬的類中,這不就是“為了讓測試變得簡單,而增加類的數(shù)量”么?它勢必會造成類的數(shù)量急劇膨脹。

  那么該拿私有方法怎么辦呢?測試它們太折磨人了。我們可否修改一下,把它們暴露給測試代碼?或者不去測試私有方法,讓設(shè)計與可測試性永不相干?或者,私有方法是一種壞味道,它表明一個類做了太多事情?

 

作者:未知 | 文章來源:未知 | 更新時間:2008-1-15 16:40:20

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒有相關(guān)文章
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·j2se 嵌入式腳本抓取引擎
    ·JAVA開發(fā)的6個實踐的例子
    ·JBuilder7 / Weblogic7開發(fā)
    ·JAVA中的抽象類型的一些概
    ·java語言開發(fā)程序中的幾個
    ·了解java開發(fā)語言在軟件開
    ·如何才能使用Java實現(xiàn)內(nèi)部
    ·Java開發(fā)學(xué)習(xí)小心使用Date
    ·Java程序員應(yīng)該了解那些開
    ·java性能優(yōu)化的一些見解
    ·介紹JDK5.0一些collection
    ·基礎(chǔ)學(xué)習(xí):java中使用存儲
    ·解析c#語言和java語言最相
    ·Java語言學(xué)習(xí):jAVA中 的多
    ·Java是不是應(yīng)該增加新特性
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) www.zgna.net All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    班戈县| 龙海市| 从江县| 洪江市| 自贡市| 屏山县| 沙雅县| 南江县| 荣成市| 聊城市| 南投市| 陆良县| 辽阳县| 鄯善县| 隆昌县| 涡阳县| 吕梁市| 合水县| 河南省| 泸州市| 浦北县| 彩票| 休宁县| 江阴市| 南川市| 名山县| 霍邱县| 游戏| 新竹市| 辛集市| 定结县| 陕西省| 社旗县| 浦东新区| 石景山区| 濮阳市| 安新县| 福州市| 二手房| 凤翔县| 手机|