青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eXile 的專欄

測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟

  對(duì)于測(cè)試驅(qū)動(dòng)開發(fā)(TDD),始終有一些迷惑,比如說,它的測(cè)試需要考慮完備性嗎,需要考慮覆蓋率嗎?等等此類。今天從Javaeye中看到一句話,終于明白了。
  “什么是TDD?TDD就是把你的需求用測(cè)試給描述出來。”
  也就是說,TDD中的測(cè)試和一般意義上的單元測(cè)試并不一樣,盡管TDD中的測(cè)試有時(shí)也作為單元測(cè)試來使用,但它們是兩回事。(這里的需求,指的不是客戶需求,而是程序員的開發(fā)需求)。
  使用TDD時(shí),首先寫的是測(cè)試,這時(shí)相應(yīng)代碼還沒有實(shí)現(xiàn),那么測(cè)試什么東西呢?所以說,寫測(cè)試的過程,同時(shí)也是設(shè)計(jì)接口的過程。這和寫單元測(cè)試的目的完全是不一樣的。
  TDD還有一個(gè)額外的好處。大多數(shù)人都是懶的,不要指望所有的程序員在寫完功能代碼后,再去編寫相應(yīng)的單元測(cè)試。我覺得這個(gè)接口的實(shí)現(xiàn)沒有問題,所以就不用測(cè)試。這種想法也很常見。所以一開始就寫下測(cè)試,可以杜絕后患。

posted on 2008-01-23 17:23 eXile 閱讀(2482) 評(píng)論(11)  編輯 收藏 引用 所屬分類: 編程與設(shè)計(jì)

評(píng)論

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:38 neoragex2002

用TDD做設(shè)計(jì)的人是爽了,寫測(cè)試一句話,多簡單。可想想你的團(tuán)隊(duì)呢?他們的創(chuàng)造熱情和成就感在哪里?他們的士氣在哪里?就幾個(gè)空而無物的測(cè)試用例?任何方法學(xué)正面地作用在主動(dòng)積極的人才會(huì)起作用。  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:49 eXile

@neoragex2002
這個(gè)老兄還是對(duì)TDD有一個(gè)起碼的了解以后,再來討論這個(gè)問題吧。
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:50 eXile

FROM JAVAEYE:
對(duì)于大多數(shù)的中國的軟件開發(fā)團(tuán)隊(duì)來說,難以實(shí)現(xiàn)敏捷的最重要問題是人的素質(zhì)問題。一個(gè)敏捷團(tuán)隊(duì)要求每個(gè)成員都有較好的OOP和OOD的能力。.......實(shí)現(xiàn)敏捷是一個(gè)漸進(jìn)的過程。構(gòu)造一個(gè)在技術(shù)上有敏捷能力的團(tuán)隊(duì)有兩種方法,一是用足夠的錢去招聘有足夠能力的程序員(大部分企業(yè)沒有那么多錢)。二是將現(xiàn)有不符合敏捷技術(shù)要求的程序員培養(yǎng)為合格的敏捷工作者。而在培養(yǎng)的路上,單元測(cè)試正是一個(gè)很好的驅(qū)動(dòng)方式和實(shí)踐平臺(tái)。  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:52 eXile

FROM JAVAEYE
就是因?yàn)椤拔臋n/注釋”在代碼的頻繁修改中太容易過時(shí),而且也太容易為人所忘記,所以在我的實(shí)踐中不寫文檔,我的文檔就是我的“代碼+單元測(cè)試”,想知道我的想法,看“代碼+單元測(cè)試”就行了,沒有任何形式的文檔比“代碼+單元測(cè)試”更能體現(xiàn)我的設(shè)計(jì)
- 我們的文檔是十分簡短和松散的,一般放在wiki上,起到story guide的作用,但如上所說,隨著開發(fā)很快就過時(shí)了,從中你能找到設(shè)計(jì)的逐步迭代,但它和最終的產(chǎn)品是有差別的
- 對(duì)于我們開發(fā)工程師來講,“代碼+單元測(cè)試”就是我們的文檔,對(duì)于客戶來講,有專門的產(chǎn)品文檔供他們使用,但是那是由文檔工程師寫的   回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:53 eXile

FROM JAVAEYE:
閱讀有些test case只能讓你云里霧里,而閱讀有些則讓你馬上就知道這段代碼的用途。其實(shí)找并不是這些test case寫的有水平差別,而往往是有針對(duì)問題角度的差別。而進(jìn)一步,你會(huì)發(fā)現(xiàn)閱讀這些test case如果按照一定順序,就會(huì)從最初的動(dòng)機(jī)到最終的實(shí)現(xiàn)細(xì)節(jié)都有一個(gè)清晰的理解,而如果我們能夠在寫這些test case的時(shí)候就標(biāo)注出這個(gè)理解順序,將是十分核算的。而實(shí)際上很多時(shí)候我們書寫的順序就是最終我們適于閱讀理解的順序。
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 21:58 eXile

JAVAEYE上真是有不少明言警句啊, 看來都是高手。。。  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 22:01 eXile

FROM JAVAEYE:
就說注釋好了,比較一下:
1。可運(yùn)行的代碼
2。測(cè)試代碼的單元測(cè)試和其他測(cè)試
3。注釋

這個(gè)重要性應(yīng)該是向下遞減的。沒有1,其他都沒有意義了。沒有2,就沒有一種可執(zhí)行、可重復(fù)的方法來驗(yàn)證1的正確性。

至于注釋,對(duì)于程序的功能、正確性和可靠性,對(duì)于客戶來說是沒有任何意義的,所以除非有特殊的理由,我們才去寫注釋。

一般來說,堅(jiān)持寫注釋的人最重要的觀點(diǎn)是便于自己或后來者理解代碼,減小程序維護(hù)和變更的成本。這個(gè)我們當(dāng)然喜歡,但是要注意幾點(diǎn):
1。注釋到底是不是最好的工具來加快和精確理解
2。達(dá)到這樣的目的需要多少成本

第一點(diǎn),首先絕大多數(shù)注釋是細(xì)節(jié)程度上的,基本上和代碼本身處于同一層次,因此我們需要看一看代碼本身是否比注釋更有權(quán)利。
注釋的目的基本上是為了說明
1:代碼實(shí)現(xiàn)中的權(quán)衡
2。代碼本身的目的
3:別的代碼使用該代碼的方法

以Java舉例,注釋包括包注釋、類注釋和方法注釋。在99%的情況下,我認(rèn)為只有包注釋和類注釋才有意義,因?yàn)橐粋€(gè)包和
類只有自己的名字來解釋自己的含義,如果是一個(gè)簡單的類,譬如說是Rectangle,當(dāng)然這個(gè)名字已經(jīng)說明了一切。但很多時(shí)候,
一個(gè)類里面包含很多方法,很難簡單地用一個(gè)類名字來描述整個(gè)類的意圖和作用這個(gè)時(shí)候,這個(gè)時(shí)候代碼本身是不足的,需要類注釋的。

對(duì)于方法層次上的注釋,除非你這個(gè)方法用了非常復(fù)雜的算法,那么我們最先關(guān)注的是它的目的,這個(gè)目的用方法的名字就足夠了,
如果你認(rèn)為它有三個(gè)目的,或者有幾個(gè)階段,那你必須重構(gòu),直到達(dá)到這個(gè)目標(biāo)。這里代碼比注釋的好處是能夠優(yōu)化代碼本身的結(jié)構(gòu),
易于重用和新變化,沒有同步的成本,更重要的是它是可執(zhí)行的。

有的時(shí)候,例如內(nèi)部實(shí)現(xiàn)是錯(cuò)誤的,我們需要修改代碼,這個(gè)時(shí)候我們也需要理解這個(gè)代碼地實(shí)現(xiàn)方式,但我認(rèn)為一旦達(dá)到了上面的要求,對(duì)一個(gè)程序員來講,代碼更精確、更簡單地能夠被理解,而不是注釋,除非注釋逐行解釋代碼地實(shí)現(xiàn)。

至于別的代碼如何來使用你自己的代碼,我不由得回憶起當(dāng)初學(xué)習(xí)delphi地經(jīng)歷,在我使用一段delphi以后,我很多時(shí)候都是憑自己對(duì)delphi函數(shù)命名的習(xí)慣的猜測(cè)去調(diào)用一個(gè)個(gè)函數(shù),而不是依靠delphi地API文檔和delphi源代碼里面的注釋(實(shí)際上非常少),真的無法理解就去看源代碼。而對(duì)于一些我完全是初學(xué)的類或者函數(shù),我的做法首先是去尋找范例代碼理解函數(shù)調(diào)用的順序,至于這種理解是否正確
最終取決于我自己的不斷測(cè)試。對(duì)于一些復(fù)雜的方法,我會(huì)在基本已經(jīng)理解,并且能夠使用的情況下再去看是否還有別的什么"訣竅",后門等等。因此,在這方面單元測(cè)試無疑比注釋更有用,但是如果一個(gè)方法確實(shí)比較復(fù)雜,并且不同地類和函數(shù)之間有一定的依賴關(guān)系,我們需要專門的API文檔,注釋根本做不到這一點(diǎn)。

第二點(diǎn),注釋的成本。注釋無法驗(yàn)證,注釋不能執(zhí)行。因此,注釋必須完全通過手工來進(jìn)行維護(hù),當(dāng)一個(gè)類被重構(gòu)為一個(gè)類層次,
當(dāng)一個(gè)方法被抽取成兩個(gè)方法,當(dāng)一個(gè)類的某些方法被移到另一個(gè)類,一個(gè)類地實(shí)現(xiàn)被改變(接口不變)的時(shí)候我們都必須手工去維護(hù)
這些東西,并且無法知道我們的注釋到底是不是正確揭示了這個(gè)類、方法的意圖和實(shí)現(xiàn)思路。這個(gè)成本是非常高的,特別是當(dāng)我們
知道注釋既不能為客戶提高更多的價(jià)值,也不會(huì)對(duì)其他程序員理解代碼有多大的幫助。當(dāng)然,如果我們有足夠的人力、物力愿意干這樣的活,有些時(shí)候也會(huì)稍微有點(diǎn)幫助。
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 22:02 eXile

FROM JAVAEYE:
實(shí)際上過多的注釋妨礙了重構(gòu)的進(jìn)行,如果你想讓代碼僵化那么就寫大量的注釋好了,越多越好,甚至注釋:代碼=10:1。重構(gòu)的結(jié)果往往是刪除掉大量的注釋,因?yàn)樗鼈兓蛘咭呀?jīng)不適合代碼當(dāng)前的結(jié)構(gòu),或者已經(jīng)不再需要,因?yàn)榇a的結(jié)構(gòu)已經(jīng)非常清晰了。而且我并不知道是否還有可能進(jìn)行下一次重構(gòu),那么我寫太多的注釋是不是很有可能是在做無用功?我其實(shí)只要寫很少量的注釋就足夠了。
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 22:02 eXile

FROM JAVAEYE:
很多大公司的代碼都沒有任何注釋,很多大師寫代碼也沒有注釋(看看junit就知道了,大家可能不知道這個(gè)東西是兩個(gè)大師在飛機(jī)上試驗(yàn)結(jié)對(duì)編程的副產(chǎn)品)。原因在于他們根本就不能容忍任何注釋造成的味道。
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-23 22:35 eXile

FROM JAVAEYE:
注釋與文檔的本質(zhì),是為了便于軟件的開發(fā)和維護(hù),而不是在一道一道的工序之間作為“交接班”的說明
  回復(fù)  更多評(píng)論   

# re: 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)的頓悟 2008-01-24 08:08 Enoch

測(cè)試驅(qū)動(dòng)開發(fā)(TEST DRIVER DEVELOP, TDD)是以測(cè)試為驅(qū)動(dòng)力,進(jìn)行開發(fā),是一種開發(fā)方法。實(shí)際上也是極限編程(Extreme Programming, EP)的一個(gè)重要特點(diǎn),TDD不斷的測(cè)試推動(dòng)代碼的開發(fā),既簡化了代碼,又保證了軟件質(zhì)量。
使用測(cè)試驅(qū)動(dòng)開發(fā)(TDD)就是通過編寫代碼的測(cè)試用例,對(duì)其功能的分解、使用過程、接口都進(jìn)行了設(shè)計(jì),以滿足軟件需求,這樣使得代碼的設(shè)計(jì)更符合后期開發(fā)的需求。
測(cè)試驅(qū)動(dòng)開發(fā)(TDD)開發(fā)通常需要明確要完成的功能,快速實(shí)現(xiàn)功能的測(cè)試用例,完成對(duì)代碼進(jìn)行重構(gòu),測(cè)試完成所有功能的開發(fā)。這里要求測(cè)試的完全隔離,不同代碼的測(cè)試不應(yīng)該存在耦合。 測(cè)試驅(qū)動(dòng)開發(fā)(TDD)從某種意義上說是單元測(cè)試(Unit Test, UT)置于軟件過程的中心地位。
  回復(fù)  更多評(píng)論   

導(dǎo)航

<2014年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計(jì)

常用鏈接

留言簿(18)

隨筆分類

隨筆檔案

服務(wù)器編程

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲自拍电影| 亚洲在线一区| 欧美网站在线观看| 欧美日韩精品欧美日韩精品一| 久久综合久久综合久久| 免费观看成人www动漫视频| 欧美国产一区二区三区激情无套| 老司机精品视频一区二区三区| 美脚丝袜一区二区三区在线观看 | 欧美午夜精品伦理| 欧美日韩欧美一区二区| 欧美日韩福利在线观看| 国产精品久久久久91| 国产欧美在线| 亚洲国产mv| 亚洲一区二区三区午夜| 久久久九九九九| 亚洲毛片播放| 午夜激情综合网| 久久中文欧美| 亚洲午夜视频| 美女性感视频久久久| 国产精品高精视频免费| 亚洲高清三级视频| 欧美一区二区三区视频免费播放| 免费成人毛片| 亚洲免费在线观看视频| 欧美.www| 国产综合在线看| 9色精品在线| 久热国产精品视频| 一区二区三区免费看| 免费观看国产成人| 国产亚洲欧美一区在线观看| 亚洲第一级黄色片| 亚洲欧美在线网| 欧美成人精品在线视频| 亚洲国产老妈| 亚洲破处大片| 久久国产高清| 国产精品久久午夜| 99热精品在线观看| 免费观看亚洲视频大全| 午夜精彩国产免费不卡不顿大片| 欧美成人国产va精品日本一级| 国产欧美一级| 先锋影音网一区二区| 亚洲人成精品久久久久| 久久久久久精| 国产视频久久久久| 欧美一区二区三区免费观看| 一区二区不卡在线视频 午夜欧美不卡' | 欧美高清影院| 在线日韩一区二区| 久久久久久一区二区| 亚洲尤物精选| 国产美女诱惑一区二区| 亚洲一区美女视频在线观看免费| 91久久夜色精品国产九色| 久久久久久久精| 在线观看国产成人av片| 欧美承认网站| 欧美精品一区二区三区在线播放| 亚洲精品影院在线观看| 欧美高清视频一区二区三区在线观看| 久久精品免费电影| 在线观看av一区| 麻豆精品网站| 免费在线日韩av| 日韩一级精品视频在线观看| 亚洲激情一区二区三区| 欧美国产日本韩| 日韩亚洲欧美一区| 亚洲最新视频在线播放| 国产精品无码永久免费888| 久久aⅴ国产紧身牛仔裤| 久久精品国产99国产精品| 亚洲国产精品电影在线观看| 亚洲国产精品一区二区www在线| 欧美另类亚洲| 久久精品女人天堂| 奶水喷射视频一区| 中文精品99久久国产香蕉| 亚洲午夜一区| 亚洲黄色成人| 亚洲一区日本| 亚洲激情视频在线播放| 一区二区高清视频在线观看| 国产亚洲精品高潮| 亚洲精品美女在线观看| 国产乱码精品一区二区三区五月婷 | 欧美va亚洲va国产综合| 国产精品你懂的在线| 亚洲一区二区三区精品在线观看| 亚洲视频综合在线| 韩国精品在线观看| 久久高清免费观看| 欧美日韩一区综合| 亚洲自拍16p| 欧美日韩亚洲一区二区三区四区| 欧美国产日韩一区二区三区| 亚洲一区bb| 亚洲免费观看高清在线观看 | 在线亚洲+欧美+日本专区| 亚洲国产综合在线| 在线综合亚洲| 免费视频最近日韩| 亚洲欧美国产日韩天堂区| 久久精品国产一区二区电影| 香蕉成人伊视频在线观看| 欧美日韩亚洲免费| 欧美激情一区在线观看| 亚洲精品免费在线| 国产精品久久久久久户外露出 | 免费久久99精品国产自在现线| 午夜精品久久久久久久蜜桃app | 欧美中文字幕不卡| 亚洲久久一区| 久久狠狠亚洲综合| 香蕉视频成人在线观看| 欧美日韩国产区| 欧美大片va欧美在线播放| 国产欧美69| 亚洲综合清纯丝袜自拍| 亚洲午夜一级| 欧美日韩免费一区| 亚洲精品视频在线观看网站| 亚洲国产精品久久久久婷婷884| 新67194成人永久网站| 亚洲一区综合| 欧美性事在线| 亚洲视频自拍偷拍| 亚洲永久免费| 国产精品国产a级| 正在播放欧美一区| 亚洲男人第一网站| 国产精品ⅴa在线观看h| 一区二区精品| 亚洲欧美综合另类中字| 国产精品女同互慰在线看| 亚洲在线免费视频| 欧美影院成年免费版| 国产一区二区精品久久| 久久久噜噜噜久久中文字免| 欧美成人精品一区二区| 伊人精品在线| 欧美高潮视频| 日韩亚洲视频| 性欧美超级视频| 狠狠噜噜久久| 欧美aⅴ99久久黑人专区| 亚洲激情欧美| 亚洲在线一区二区三区| 国产日韩欧美高清免费| 久久综合狠狠| 日韩午夜激情电影| 性感少妇一区| 亚洲第一久久影院| 欧美日韩中文字幕综合视频| 午夜精品视频在线| 欧美激情1区2区3区| 中文高清一区| 国内欧美视频一区二区| 欧美成人免费全部| 亚洲私人影吧| 欧美激情bt| 欧美在线看片a免费观看| 亚洲国产婷婷综合在线精品| 国产精品久久久久aaaa| 麻豆精品精品国产自在97香蕉| 亚洲美女福利视频网站| 久久久免费精品| 日韩一区二区高清| 国产区精品视频| 欧美精品一区二区三区很污很色的 | 亚洲天堂久久| 极品裸体白嫩激情啪啪国产精品| 欧美成人午夜77777| 亚洲国产精品久久| 一区二区三区国产在线| 国产一区二区三区成人欧美日韩在线观看 | 国产精品国产福利国产秒拍| 久久精品一区二区三区不卡| 亚洲乱码国产乱码精品精天堂| 性高湖久久久久久久久| 亚洲一区二区三区中文字幕在线| 快she精品国产999| 亚洲在线观看| 日韩小视频在线观看| 国产一区在线观看视频| 欧美日韩一区二区三区免费看| 久久综合中文| 销魂美女一区二区三区视频在线| 日韩写真在线| 91久久国产综合久久蜜月精品| 久久久久五月天| 欧美一区二区三区视频免费| 亚洲午夜影视影院在线观看| 亚洲美女色禁图| 91久久国产综合久久91精品网站|