2017-08-30 40 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

感謝您的回覆。這不是一個密封的特質。我知道我可以做到這一點。問題是這是否是一種很好的編碼風格。 –