by shigemk2

当面は技術的なことしか書かない

Uniform access principle

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

と訳される。

属性をフィールドとメソッドのどちらで実装するかによってクライアントコードが影響を受けてはならない

seesaawiki.jp

とも、

別の言葉に置き換えると、フィールドへのアクセスは、それがフィールドであるか、値を返すメソッドであるかを露呈してはならないということ

関数型の考え方: 不変性

とも言われる。Programming Scalaだとこういうふうなコードで説明されている。 確かにこの例だと、nameがdefかvalかは関係なく、フィールドの値にアクセス出来ることを示している。

trait AbstractNameTrait {
  def name: String
}
class ConcreteNameClass extends AbstractNameTrait {
  val name = "ConcreteNameClass"
}
println(new ConcreteNameClass().name) // => "ConcreteNameClass"