是否有建议的最佳实践来在 Scala 中定义案例类的位置?例如,假设您有几个参与者相互发送消息,应该在哪里定义案例类?
在共享包中?在其中一位演员中-如果是的话,是哪一位?
或者在一个包对象中,例如:
package object mypackage {
case object Ping
case object Pong
case object Stop
}
如果演员在同一个包里?
只是想在这里找出最佳实践。
是否有建议的最佳实践来在 Scala 中定义案例类的位置?例如,假设您有几个参与者相互发送消息,应该在哪里定义案例类?
在共享包中?在其中一位演员中-如果是的话,是哪一位?
或者在一个包对象中,例如:
package object mypackage {
case object Ping
case object Pong
case object Stop
}
如果演员在同一个包里?
只是想在这里找出最佳实践。
我通常将消息案例类与参与者本身放在一起,缺点是您不能以这种方式在参与者之间共享消息类,但实际上这对我来说从来都不是问题,而且在调用它们时有点冗长情商:
MyActor ! MyActor.MyMessage
我还没有找到解决这个问题的最佳实践,但我可以告诉你我是如何做到的。对我来说,这取决于消息的复杂性。如果我有高度分支的继承消息,我通常将它们放入一个名为“消息”的自己的包中。如果我在同一个包中只有许多 Actor 使用的一些消息,我会在包对象中定义这些消息。但是,如果有消息,仅由单个 Actor 使用(例如,如果我想模拟私有递归函数),我会使用它们在 Actor 中定义这些消息。有时混合所有这些可能是最好的方法。