2017-08-30 95 views

回答

3

你可以,但如果他们没有密切相关,你最好不要。

实际的原因是,将许多类/特征添加到文件可能会使编译(特别是增量编译)变慢。

下面是https://virtuslab.com/blog/zinc-sbt-friendly-code/#less-is-more

减班/特征/每源对象文件意味着节省更多的时间提取。 Scalac可以编译整个源代码。即使锌知道只有一行对象需要重新编译,它仍然需要编译整个源代码(以及所有蕴含宏和其他讨厌的东西)。

解决方案尽可能简单:分割您的资源!如果增量编译不足以说服你,你应该意识到它还应该有助于编译时间,甚至在合并期间导致更少的冲突。

值得注意的例外是:sealed trait

  • 家庭:sealed允许只有源文件内延伸trait,让你在这种情况下,你必须保持所有类延伸的trait在一起。

  • 类和伴随对象:以类名命名的object仅当其在同一个源文件中定义时才被视为伴侣对象,所以再次必须将它们放在一起。

official style guide似乎证实了这种方法,即使它没有明确提到编译表演:

通常,文件应包含一个单一的逻辑编译单元。 “逻辑”我的意思是一个类,特质或对象。本指南的一个例外是具有陪伴对象的类或特征。伴随对象应该与其相应的类或特征分组在同一个文件中。

1

是的,你可以让一个类扩展一个特征在同一个scala文件中。此外,请查看sealed trait并查看它是否与您有关。

+0

感谢您的回复。这不是一个密封的特质。我知道我可以做到这一点。问题是这是否是一种很好的编码风格。 –