5

我已经阅读了一些关于 Symfonys 事件系统的指南/教程。但我仍然不确定命名最佳实践。不幸的是,大多数文档都使用默认场景,如登录等。所以这里有一个游戏的例子:

命令评估某种匹配结果。它会触发这样的适当事件:

$dispatcher->dispatch('game_bundle.match_won', new MatchWonEvent($match, $winner));

现在我想注册几个听众来处理这个事件,例如一个用于将其发布到获胜者的 Facebook 页面,另一个用于为获胜者预订成就。在示例中,我发现处理登录事件的侦听器主要被称为类似LoginListener,但这个名称不应该与它的实际使用相关,而不是与它相关的事件吗?因为现在在我的示例中,我需要一个MatchWonListener,但它是否应该同时包含 Facebook 和成就逻辑?那将使事件系统变得无用......不是更好FacebookListener吗?这也可以轻松地将更多与 Facebook 相关的事件添加到示例中。onMatchWon($event)AchievementListeneronMatchWon($event)FacebookListener

我对样本中的命名感到困惑,现在不确定。我完全错了吗?

4

1 回答 1

3

没有关于如何命名事件的“最佳实践”。但是,如果您在事件之后命名侦听器,我认为这完全违背了事件的目的。目标是能够让系统的不同部分相互交互,而不会产生耦合和混合问题。

因此,考虑到您已经走到了创建事件以分离关注点的地步,为什么要将所有不同的逻辑混合到一个侦听器中?在这种情况下,您不妨直接调用而不是调度事件。

我个人反对“onMatchWon”之类的名称,因为这并没有描述该方法的作用。假设您想收听比赛获胜事件并更新获胜用户的成就。我可能会有一些用户管理服务或带有方法的排序updateAchievements(MatchWonEvent $event)。但我认为这更像是一个品味问题,或者如果你愿意的话。

于 2012-11-05T20:46:37.333 回答