这更像是设计和可读性/可维护性问题,而不是技术问题。
有时在Scala中,您会获得这些通常用于保存数据的一个班组类(通常是案例类)。它们与Java bean非常相似,但构造函数参数实际上是val
成员,由于不变性而不需要setter方法,并且由于case类的优点而不需要toString
,最后只有一行由构造函数参数组成。
我觉得把这些单行放在一个单独的Scala文件中是浪费的,我讨厌将它们放在其他更加多余的Scala类中,因为它开始变得混乱(即使在IntelliJ IDEA中它开始污染项目源代码树)。
我开始养成将这些单个内容放在该包的Package Object package.scala
文件中的新习惯。从可维护性的角度来看,这有什么不利之处吗?我只是把它们放在那里,因为缺少一个更好的地方。有没有更好的方法?
答案 0 :(得分:0)
我认为这并不存在缺点,但我也没有看到这样做的直接优势或理由。
您可以查看this question。基本上,如果使用-Xlint
编译器标志,则会告诉您不应该将类放入包对象中。
如果你想要将几个类放在一起,因为它们具有单行性质,你可以将它们放在一个文件中,它不必是一个包对象。 E.g。
// utils.scala
package foo
case class FooUtil()
case class BarUtil()
而不是package object foo { case class FooUtil() ... }