getter/setter不要論までのOOPの流れ
public propertyが定義できるクセに、それは良くないから使うなとか、
getter/setterは定義できるクセに、それは良くないから使うなとか、
この辺の流れを順序立てて書くとこんな感じだろう
classはpropetyを、publicでもprivateでも定義できる
しかし、publicにして定義すると、
直接class外からpropertyの値を参照できる
その値を修正したい場合に修正箇所が多い
直接class外からpropertyに値を代入できる
外部から全くおかしい値を代入できてしまう
e.g. human.age = -100
というような問題が生じる
getterを使うことで、propertyのwrapperを作る valueを返していたところを、value*1.1を返すように修正するのは容易
setter内でvalidationしてから値をsetできるので変な値が入らない
しかし、更にclassもimmutableにやっていくべきという流れになる
修正の容易さ以前にそもそもただのデータのwrapperだけのためにclassを使うな
ロジックを含めて値を返すべき
だからgetterは不要
classはimmutableであるべき
instantiateした時点で固定されるべき
だからsetterは不要
mrsekut.iconとしては、この文脈には大方賛同する
が、「getterは不要」は主張として強すぎないか?という気はする
「何でもかんでもただのgetterを書くな」ぐらいが主張したいことと合っている気がする
あるいは「getterはほとんど不要」とか
最初からimmutableでしかOOPできないような言語設計にしろよと思うmrsekut.icon
getter/setter推進
getter/setterが必要な理由