測試驅動開發的操作非常簡單。
1、編寫測試**
2、執行測試用例,發現用例不通過
3、增加少量實現**
4、執行測試用例,用例通過
5、重構
其中有三個比較關鍵的因素:測試、節奏、驅動。
測試驅動開發首先要講的就是測試了。以前在乙個專案中,我需要寫乙個帶有非常複雜業務的計算類。當時對於能否寫出來完全沒有信心,主要是情況太複雜,分支特別多。其中涉及到表示式的解析,自定義變數的引用關係,資料的彙總計算等。這時候如果採用傳統的開發方式是很難保證**的正確性,糟糕的情況就是在後台計算類中的bug只有在介面部分才能測試出來。後來決定採用測試驅動開發的方式,先構造用例,然後寫實現**。一方面可以從用例的角度分析這個模組的功能,更重要的另外乙個方面可以確保計算類的低bug率。
在有了測試**的基礎上,在去實現這樣的需求心裡是更加有底氣的。並且檢查複雜的程式內部邏輯比檢查乙個個的測試用例要複雜得多。
重構是建立在擁有測試**的基礎上的。
節奏確定了效率。從上面介紹的測試驅動開發的五步中可以明確地看到一種節奏感。如果使用現在流行的測試框架,如:xunit,在執行的時候可以看到「紅綠交替」的現象。(紅色代表用例未通過、綠色代表用例通過)。並且上面說的五步迴圈的時間非常短,往往以分鐘為單位衡量。
有了乙個好的節奏,可以有力地支撐結對程式設計的實踐。
結對程式設計的概念很容易理解:兩個人共用一台計算機編寫**。但實踐的時候會遇到很多問題。
以前在做結對程式設計的時候出現兩個人不「合拍」的情況。表現就是乙個人在寫**,另外乙個人在「思考」或者「發呆」。有的時候是覺得其中乙個寫**寫累了,再換成另外乙個。或者總是乙個人在寫**,另外乙個在旁輔導。
tdd中有乙個節奏的問題。乙個任務被分解成「紅條」、「綠條」的交替。結對的兩個人注意力全部放在「紅綠交替」上。這樣可以確保兩個人的步調一致,雙方都知道現在我們做到了第幾步。通常可以乙個人編寫測試用例,另外乙個人實現,然後交換。
怎樣編寫讓對方出錯的用例,怎樣不讓自己的**有漏洞。開發就在這種合作、競爭的互動遊戲中進行。
體會到了測試與節奏帶來的好處之後,最近發現tdd與簡單設計也有著比較緊密的關係。
如果能真的做到「驅動」這個效果,不編寫任何一行測試用例不需要的冗餘**,在沒有用例證明的情況下不做結構上的設計。這樣將未做的工作最大化的藝術就是簡單設計的核心。
並不是說不需要設計,而是說設計的意圖必須要有相應的用例證明。
go中的三個點( )
表示params可能是多個引數 func main func eg str string,params inte ce var arr intvar bac 3 string fmt.println bac c b a 遍歷 組裝成新的陣列data,使用.var data string fmt.pr...
Golang中的三個點
之前提到了把乙個切片追加到另外乙個切片時使用到了.今天我們好好研究一下這三個點,部落格寫著寫著又成了,回字有四種寫法 1 package main 23 import fmt 45 func main 89 func sum numbers int int 14return result 15 第9...
爬蟲三個點
2 解析網頁就是從整個網頁的資料中提取想要的資料。類似於你在頁面中想找到產品的 就是你要提取的資料。3 儲存資料也很容易理解,就是把資料儲存下來。我們可以儲存在csv中,也可以儲存在資料庫中。三個流程的技術實現 下面列出三個流程的技術實現,括號裡是對應的章節。1.獲取網頁 獲取網頁的基礎技術 req...