我目前正在Unity中玩游戏。想象如下:你有一个由4x4字段组成的游戏区域,每个字段都可以放一张卡片。你对抗敌人。每张卡都有所作为。 (想想Magic:The Gathering)
在我的游戏中,我有一个类GameMaster,它将所有内容保存在一起,并进行主要计算。我还有一个基本的课程“卡片”。
如果我使用卡片,我需要将此卡片的信息传递给GameMaster。你会如何做到两者之间的联系?数据需要在OnMouseDown()事件上传递。
我会用一个二传手。所以在OnMouseDown()事件中我会调用GameMaster.AddCard(cardData);
其他人对我说,我应该使用事件。我知道事件更通用,它们对于像OnMouseDown()这样的东西很好;的OnClose();可以在任何地方使用的东西,你无法预测它们将被调用的地方。那么说,我的代码通过使用事件更加分离。我有点怀疑,因为这种关系永远不会改变。这是我游戏机制的一部分。
然后,有人说,“你会怎么测试它?”这是事实。通过事件,测试可能更容易。
所以,问题是:什么时候不做TDD,哪个更好?使用TDD时,哪个更好?
此外,卡片所做的事情相当复杂,而且真的各不相同。所以我虽然做了几个函数,如DoublePoints();双倍时间(); MakeSpecialMOveXYZ();等等这些功能因卡而异。将它们的代表从我的Card-Class传递给我的GameMaster卡是没关系的吗? (通过二传手或事件)
答案 0 :(得分:0)
在你的情况下,我会使用setter。事件是实时/异步过程的更多方式。
他们说,我的代码通过使用事件更加分离。
这完全取决于实施。这两种方法都可以生成解耦代码。
通过事件,测试可能更容易。
我不同意,但话又说回来,我不是QA专家。