我提出的另一个关于TDD的问题。我读过一些关于TDD的文章和书中的章节,我理解为什么你应该TDD,我理解简单的例子,但似乎当我在现实世界中尝试时,我很容易被卡住。
如果你要编写Windows Vista附带的著名Spider纸牌,你能给我一些简单的TDD示例吗?你会从哪些测试开始?
发布于 2009-01-07 01:28:58
好吧,当你问到蜘蛛纸牌的TDD时,你基本上是在问如何设计这样的游戏。测试将是设计决策的结果。纸牌是一个简单的游戏,但是从头开始设计这样的游戏并不是一件容易的事情(有不止一种方法可以做到)。
您可能想要从一些更简单的设计开始,比如猜数游戏(系统生成一个随机数,您尝试在尽可能少的尝试中猜出它)。
这样一个简单游戏的一些特性是:
的猜测次数
因此,您可以尝试以下测试(就像粗略的示例,但很容易编码):
number > secret_number时返回"HIGH“,在number < secret_number时返回"LOW”,在number == secret_number时返回"WIN“?这只是一个非常粗略的提纲,决不是完整的。但是您可以从英文描述中看到,代码示例将更加冗长。我认为如果你想要更具体的答案,你必须问一个更具体的问题。
发布于 2009-01-07 01:52:35
纸牌游戏包括纸牌。
因此,您可以想到一个Card类。您可以为各个Card对象编写一些测试。您可以编写Card类来通过测试。
你需要一副牌来洗牌,并在布局中进行交易。您可以考虑Deck类和shuffle算法,以及它如何维护处理的状态。你为一个洗牌和交易的Deck写了一些测试。您可以编写您的Deck类来通过测试。注意,这需要一个模拟随机数生成器,它实际上不是随机的。
纸牌游戏包括一种带有空白空间和卡片的布局。规则中的一些空格(仅限国王或王牌)。纸牌游戏有时会涉及一支股票,或多或少是甲板的残余物。
因此,您可以考虑一个Layout类,其中包含卡片的空间。您为布局编写了一些测试,并放入了各种卡片。您可以编写布局类来通过测试。
然后是关于哪些卡片可以从布局中移出的规则。全堆,子堆,顶牌,什么都行。您有一个AllowedMove或GameState或类似的类。一样的演练。粗略地定义它的作用,编写测试,完成类。
你有用户界面和显示东西。演练是一样的。
等。
我在一本关于OO Design的书中详细介绍了这一点。
发布于 2009-01-07 09:39:33
首先,你应该从引擎中分离出图形用户界面。TDDing图形用户界面是最难的部分,所以你应该保持你的图形用户界面层尽可能的薄。在谷歌上搜索“谦逊的对话框”,然后阅读tddui list on Yahoo! groups。
引擎层将实现游戏规则。我不确定Spider纸牌与古老的纸牌(即Windows 3.1)有什么不同,我基于以下内容:
以下是我将开始的初始测试列表:
H112>当顶部的卡片低于移动的卡片从堆叠中移动所有翻转的卡片时,您只能将多张卡片移动到非空堆叠中。第一张牌可以退回(或者应该自动退回?)您可以从码头上取出第一张牌,并将其放入任意堆栈(?)我对规则不太确定,但我想这已经足够让我明白了。
最后,从最简单的测试开始,当你有一个新的测试想法时,或者当你发现自己有疑问时,将测试添加到列表中:如果……会发生什么?
https://stackoverflow.com/questions/418778
复制相似问题