クラス・オブジェクト・トレイトのメンバは全て,空行を挟んで宣言するべきです。varとvalだけがこのルールに対する例外になります。これらの要素は,scaladocのあるフィールドが1つも無く,全てのフィールドがシンプルな(最大で20文字程度で,1行のもの)定義で収まる場合を除いて,空行を挟まずに宣言します。
class Foo {
val bar = 42
val baz = "Daniel"
def doSomething() { ... }
def add(x: Int, y: Int) = x + y
}
スコープの中で,フィールドはメソッドの前にあるべきです。その例外は,valの定義がブロックになっている(2つ以上の式を持っている)と,「メソッドのような」操作(e.g. Listの長さを操作する)を持つ場合です。そのような場合,valは,ファイルの後ろの方の,論理的な順序が意味する通りに配置します。このルールはvalとlazy valにのみ適用されます!varの定義がファイル中に散在すると,その変化を辿るのが極めて困難になります。