Setter vs. Event
本文关键字:Event vs Setter | 更新日期: 2023-09-27 18:03:08
我目前正在用Unity制作一款游戏。想象一下:你有一个4x4的场地,在每个场地上你可以放一张卡片。你与敌人对抗。每张卡片都有作用。(想想《万智牌》)
在我的游戏中,我有一个类GameMaster,它将所有内容放在一起并进行主要计算。我也有一个基本类"Card"。
如果我使用一张卡,我需要将这张卡正在做什么的信息传递给GameMaster。你如何将两者联系起来?数据需要通过OnMouseDown()事件传递。
我将使用setter。所以在OnMouseDown()事件中,我将调用GameMaster.AddCard(cardData);
别人对我说,我应该用Events。我知道事件是更通用的,他们很好像OnMouseDown()这样的事情;OnClose ();等。可以在任何地方使用的东西,你无法预测它们将从哪里被调用。他们说,通过使用事件,我的代码更加解耦了。我有点怀疑,因为我们的关系从未改变。这是我游戏机制的一部分。
然后,有人说,"你怎么检验它?"这是真的。使用事件,测试可能更容易。
所以,问题是:当不做TDD时,什么更好?当使用TDD时,哪个更好?
此外,卡片所做的事情相当复杂,而且变化很大。所以我想做几个函数,比如DoublePoints();DoubleTime ();MakeSpecialMOveXYZ ();等等,这些功能确实因卡而异。是否可以将它们的委托从我的Card-Class传递到我的GameMaster-Card?(通过setter或event)
在你的情况下,我会使用setter。事件更适合实时/异步进程。
他们说,我的代码通过使用事件可以更好地解耦。
这完全取决于实现。这两种方法都可以产生解耦的代码。
使用事件,测试可能更容易。
我不同意,但话说回来,我不是QA专家。