关于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