英文原文:http://docs.scala-lang.org/style/
译文如下:
通常,文件应包含单个逻辑编译单元。通过“逻辑”我的意思是一个类,特征或对象。本指南的一个例外是具有伴随对象的类或特征。伴随对象应与其相应的类或特征分组在同一文件中。这些文件应该根据它们包含的类,特征或对象来命名:
package com.novell.coolness
这些编译单元应放在目录中命名 Inbox.scala
的com/novell/coolness
文件中。简而言之,Java文件命名和定位惯例应该是首选的,尽管Scala允许在这方面有更大的灵活性。
多单元文件
尽管上面说过,但是有一些重要的情况需要在单个文件中包含多个编译单元。一个常见的例子是密封特性和几个子类(通常模拟功能语言中的ADT语言功能):
sealed trait Option[+A]
由于密封的超类(和特征)的性质,所有子类型都 必须包含在同一个文件中。因此,这种情况绝对符合一个单一文件的偏好应被忽略的情况。
另一种情况是当多个类逻辑上形成一个单一的,凝聚力的群体时,将概念分享到通过将其包含在单个文件中来大大地提供维护的点。这些情况比上述密封超类异常难以预测。一般来说,如果在单个文件中对多个单位进行长期维护和开发更容易,而不是跨多个进行分散,那么这种组织策略应该优先于这些类。但是,请记住,当单个文件中包含多个单元时,在进行更改的时候,找到特定单元往往更加困难。
所有多单元文件应该以小写第一个字母给出camelCase名称。这是一个非常重要的惯例。它区分多单元文件,大大减轻了查找声明的过程。这些文件名可能基于它们包含的重要类型(option.scala
例如上面的示例),或者可以描述(例如ast.scala
)内的所有单元共享的逻辑属性 。