定义案例类的好地方



在 Scala 中定义案例类的位置是否有建议的最佳实践?例如,假设您有几个参与者相互发送消息,应该在哪里定义案例类?

在共享包中? 在其中一个演员中 - 如果是的话,是哪一个?

或者在包对象中,例如:

package object mypackage {
  case object Ping
  case object Pong
  case object Stop
}

如果演员在同一个包装中?

只是想在这里找出最佳实践。

我通常将消息案例类与参与者本身放在一起,缺点是你不能以这种方式在参与者之间共享消息类,但在实践中这对我来说从来都不是问题,当调用它们 eq 时会更冗长一些:

MyActor ! MyActor.MyMessage

我还没有找到这个问题的最佳实践,但我可以告诉你我是如何做到的。对我来说,这取决于消息的复杂性。如果我有具有继承的高度分支消息,我通常会将它们放入一个名为"message"的包中。如果我在同一包中只有许多Actor使用的一些消息,则在包对象中定义消息。但是,如果存在仅由单个参与者使用的消息(例如,如果我想模拟私有递归函数),我会使用它们在Actor中定义这些消息。有时,所有这些的混合可能是最好的方法。

最新更新