關於TDD的另一個問題來自我。我已經閱讀了關於TDD的一些文章和書籍章節,並且我明白爲什麼你應該TDD和我理解簡單的例子,但是似乎當我在現實世界中嘗試了這一點時,我很容易陷入困境。TDD Spider Solitaire
如果您要編程Windows Vista附帶的衆所周知的蜘蛛紙牌,您能給我一些簡單的TDD示例嗎?你會開始哪些測試?
關於TDD的另一個問題來自我。我已經閱讀了關於TDD的一些文章和書籍章節,並且我明白爲什麼你應該TDD和我理解簡單的例子,但是似乎當我在現實世界中嘗試了這一點時,我很容易陷入困境。TDD Spider Solitaire
如果您要編程Windows Vista附帶的衆所周知的蜘蛛紙牌,您能給我一些簡單的TDD示例嗎?你會開始哪些測試?
那麼,當你問TDD for spider solitaire,你基本上在問如何設計這樣的遊戲。測試將是設計決定的結果。紙牌遊戲是一個簡單的遊戲,但從頭開始設計這樣的遊戲並不是微不足道的(有很多方法可以去做)。
您可能想從一個更簡單的設計開始,比如數字猜測遊戲(系統會生成一個隨機數,並嘗試儘可能少地嘗試猜測)。
這樣一個簡單的遊戲中的某些功能是:
從您可以嘗試這些測試的數量(只作爲粗略的例子,但容易編碼):
secret_number >= 1 && secret_number <= 10
。number > secret_number
時返回「HIGH」,number < secret_number
時爲「LOW」,number == secret_number
時爲「WIN」這只是一個非常粗略的概述,並不是完整的。但是你可以從英文的描述中看到代碼示例會更加冗長。我想如果你想要更具體的答案,你必須提出一個更具體的問題。
紙牌遊戲涉及卡。
所以,你想到一個卡類。您爲單個卡對象編寫一些測試。你寫你的卡類來通過測試。
您需要一個可以洗牌並處理佈局的套牌。你會想到Deck類和shuffle算法以及它如何保持交易狀態。你爲一個洗牌和交易的套牌寫一些測試。你寫你的Deck類來通過測試。 [注意,這需要一個實際上並不隨機的模擬隨機數發生器。]
紙牌遊戲涉及與空的空間和卡片的佈局。規則的一些空白空間(僅限國王或只有王牌)。紙牌遊戲有時會涉及一個股票,或多或少的甲板遺體。
所以你想到一個佈局類,用卡片空間。您爲佈局編寫一些測試並放入各種卡片。你編寫你的Layout類來通過測試。
然後有什麼卡可以從佈局移動的規則。整個堆棧,子堆棧,頂層卡片,等等。你有一個AllowedMove或GameState或一些這樣的類。相同的演習。大致定義它的功能,編寫測試,完成課程。
你有用戶界面和顯示的東西。演習是一樣的。
粗糙的類。
定義測試。
完成課程。
等
我在一本書上OO Design部分詳細介紹了。
首先,您應該從中分離出GUI,以便。 TDD的GUI是最難的部分,所以你應該保持你的GUI層儘可能薄。谷歌爲「謙卑的對話框」並閱讀tddui list on Yahoo! groups。
引擎層將執行遊戲規則。我不知道蜘蛛紙牌從古老的紙牌遊戲的不同之處(即從Windows 3.1),關於這一點我基於以下幾點:
這裏是最初的測試表,我會從開始:
I'me越來越不確定的規則,但我認爲這是足以讓這個想法。最後,從最簡單的測試開始,當你有一個新的測試想法時,或者當你發現自己質疑時,將測試添加到列表中:如果...發生了什麼。
不應該是「secret_number> = 1」嗎? – guerda 2009-01-07 10:02:07