英文原文:http://docs.scala-lang.org/style/
譯文如下:
通常,檔案應包含單個邏輯編譯單元。通過“邏輯”我的意思是一個類,特征或對象。本指南的一個例外是具有伴随對象的類或特征。伴随對象應與其相應的類或特征分組在同一檔案中。這些檔案應該根據它們包含的類,特征或對象來命名:
package com.novell.coolness
class
Inbox
{
...
}
// companion object object
Inbox
{
...
}這些編譯單元應放在目錄中命名
Inbox.scala
的
com/novell/coolness
檔案中。簡而言之,Java檔案命名和定位慣例應該是首選的,盡管Scala允許在這方面有更大的靈活性。
多單元檔案
盡管上面說過,但是有一些重要的情況需要在單個檔案中包含多個編譯單元。一個常見的例子是密封特性和幾個子類(通常模拟功能語言中的ADT語言功能):
sealed trait Option[+A]
case
class
Some
[
A
](
a
:
A
)
extends
Option
[
A
]
case
object
None
extends
Option
[
Nothing
]
由于密封的超類(和特征)的性質,所有子類型都 必須包含在同一個檔案中。是以,這種情況絕對符合一個單一檔案的偏好應被忽略的情況。
另一種情況是當多個類邏輯上形成一個單一的,凝聚力的群體時,将概念分享到通過将其包含在單個檔案中來大大地提供維護的點。這些情況比上述密封超類異常難以預測。一般來說,如果在單個檔案中對多個機關進行長期維護和開發更容易,而不是跨多個進行分散,那麼這種組織政策應該優先于這些類。但是,請記住,當單個檔案中包含多個單元時,在進行更改的時候,找到特定單元往往更加困難。