原則,1つのファイルには単一の論理的なコンパイル単位を含むべきです。「論理的」な単位とは,クラス,トレイト,またはオブジェクトを意味します。唯一の例外は,コンパニオンオブジェクトを持つクラスまたはトレイトです。コンパニオンオブジェクトは,対応するクラスまたはトレイトと同じファイルに含むべきです。ファイル名は,そのファイルに含まれるクラス,トレイト,またはオブジェクトに基づいて命名します。
package com.novell.coolness
class Inbox { ... }
// コンパニオンオブジェクト
object Inbox { ... }
このコンパイル単位は,com/novell/coolnessディレクトリのInbox.scalaというファイルにあるべきです。つまり,Scalaの柔軟な命名・配置規則にかかわらず,Javaにおけるファイルの命名規則と配置規則を守るべきだということです。