All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation
Uniform access principle - Wikipedia, the free encyclopedia
と訳される。
属性をフィールドとメソッドのどちらで実装するかによってクライアントコードが影響を受けてはならない
とも、
別の言葉に置き換えると、フィールドへのアクセスは、それがフィールドであるか、値を返すメソッドであるかを露呈してはならないということ
とも言われる。Programming Scalaだとこういうふうなコードで説明されている。 確かにこの例だと、nameがdefかvalかは関係なく、フィールドの値にアクセス出来ることを示している。
trait AbstractNameTrait { def name: String } class ConcreteNameClass extends AbstractNameTrait { val name = "ConcreteNameClass" } println(new ConcreteNameClass().name) // => "ConcreteNameClass"