日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

都在说TDD开发,那到底TDD是什么?

發(fā)布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 都在说TDD开发,那到底TDD是什么? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??? 想了半天,確實是記不得什么時候第一次聽說TDD了,我這里是要拍(拍板磚的拍)這個所謂的TDD,所以也就懶得去找TDD到底是什么時候提出來的,雖然google一下可能在第一頁就能有正確的命中(比如wiki百科,哦可惜不能訪問了)。對TDD我還是了解一點點的,至少知道它被大家叫做Test Drive Development,不過我覺得過分強(qiáng)調(diào)這個東西真的有些無聊,甚至是相當(dāng)?shù)臒o聊。

??? 程序員進(jìn)行開發(fā)的動力是靠Test來Drive嗎?這顯然是極其荒謬的結(jié)論,因為有這樣一個大家還基本能贊同的觀點,那就是:高質(zhì)量的程序是程序員編寫出來的,而不是測試出來的。所以對于程序編寫,測試如果是錦上添花,那么最終結(jié)果是非常棒的。而如果測試成為了雪中送炭,那么這個產(chǎn)品或項目注定了就是一坨屎。程序的質(zhì)量和TDD有什么關(guān)系呢?

??? TDD是束縛程序員生產(chǎn)力的桎梏,同時TDD也是程序員推卸和逃避責(zé)任的法寶。程序員是思考型的工作者,而不是流水線上的裝配工人。雖然今天在一些特定的場景里,程序員可以像標(biāo)準(zhǔn)件一樣被任意的替換,但不得不說這樣的程序員其實就是編碼工人而已,就像拿到圖紙后就知道該怎么砌磚的建筑工人一樣。為什么說TDD阻礙生產(chǎn)力?這很明顯,編寫測試用例需要時間和精力呀。當(dāng)然很多人會說自測試是程序員的責(zé)任,如果不編寫測試用例,不做Unit Test,怎么來保證程序員的代碼質(zhì)量?編程是一種還算有些創(chuàng)造性的工作,而不是挖一個坑種一個蘿卜的機(jī)械勞動。測試用例只是對矛盾的一種轉(zhuǎn)換,比如我應(yīng)該讓我的程序處理3種輸入,結(jié)果我把這個任務(wù)轉(zhuǎn)換成了:我有3個測試用例,我的程序需要通過這3個測試用例。到底程序員是在干嘛?為了測試用例而編程嗎?由于測試用例也是程序員自己寫的,所以測試用例的錯誤和失誤風(fēng)險和程序的風(fēng)險等效。實際上程序員還是在為自己編程,為自己的思考編程。這樣一來到底是自己的思考犀利敏銳,還是把思考變成了測試用例更加有效?我覺得自然的思考最有效率,而用心的思考最有效果。而隔了一層測試用例的思考,使人更加容易出錯和生長惰性,因為增加了步驟和莫名的依賴,覺得通過測試用例就萬事大吉。殊不知自己編寫的測試用例只是思考的一種轉(zhuǎn)換,一種更加難以把握重點和實質(zhì)的轉(zhuǎn)換,因為編程的動力已經(jīng)變成Test的結(jié)果了。

??? 關(guān)于使用TDD來重構(gòu)更是騙小孩的把戲。TDD強(qiáng)調(diào)的就是要通過測試,別的都不再重要。任何"多余"的功能,就是Unit Test Case沒有覆蓋的功能,就沒有了任何實現(xiàn)和處理的價值,編寫這樣的處理代碼被認(rèn)為莫名其妙,因為它們不會被測試,也沒有這樣的Unit Test Case。作為一個真正的程序員,是不會容忍初始的代碼實現(xiàn)是一坨屎,然后再來根據(jù)什么Test Case重構(gòu)成Perfect的代碼的。因為第一次的思考一般是嚴(yán)肅的,第一次編寫的代碼是最有靈犀的,它不是在后來懶心無腸就能修改出來的。反而后來的代碼更多的就是為了亮綠燈而已,效率和美感蕩然無存。這有點像是在污蔑真正認(rèn)真重構(gòu)代碼的人吧?其實不是,如果你真是認(rèn)真地人,為什么在開始不仔細(xì)思考,把那些編寫所謂Test Case的時間用來編寫好你的第一版代碼,然后認(rèn)真地用"心"執(zhí)行幾次呢?因為這樣的代價其實是在debug時不可避免的,如果真要完全(注意是完全)依賴綠燈,這也就是嚴(yán)重的開發(fā)效率問題了。

????版本升級和延續(xù)又真的能依靠TDD嗎?首先我們假設(shè)升級和延續(xù)的改動是有限的,否則成了重寫就不在這個討論之列了。測試依靠測試用例,測試用例如同代碼注釋、開發(fā)文檔,它們同樣存在著過時和與實現(xiàn)不同步的問題,這都需要維護(hù)。而且寫得ugly的Unit Test Case和濫注釋濫文檔是一樣的,到后來根本沒有用也沒有任何人愿意再去維護(hù)修改趟這個渾水。真正的版本升級和延續(xù)的保障是Product Team人員的穩(wěn)定。如果從設(shè)計到實現(xiàn)甚至測試,主要人員都很穩(wěn)定地一直做下來,那么新的設(shè)計和改動實現(xiàn)后要不穩(wěn)定都難。這是TDD能Drive的嗎?一些惜墨如金的注釋,一堆莫明其妙的開發(fā)文檔、啰里啰唆的n多Unit Test Case,不知道新來的人面對后怎么開始他的延續(xù)工作?

??? 所以到底什么是TDD?什么才是有效的TDD?真正的TDD應(yīng)該是:Thinking Drive Development。真是郁悶,縮寫還居然一樣,算了,就沾點惡名吧。程序員進(jìn)行直接的縝密思考,他提交的代碼才會是sexy的,他的開發(fā)效率也才會是最高的,所謂磨刀不誤砍柴功正是如此。而Unit Test Case、Unit?Test只是開發(fā)方法有益的補(bǔ)充,不是主要矛盾所在。

轉(zhuǎn)載于:https://www.cnblogs.com/birdshome/archive/2006/06/24/Thinking_Drive_Development.html

總結(jié)

以上是生活随笔為你收集整理的都在说TDD开发,那到底TDD是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。