状況
- フィールドに直接アクセスしている
_a = _a * 2
対処
- そのフィールドに対するgetおよびsetメソッドを定義し、それらのメソッドを使用する
メリット
サブクラスがその情報の取り出しに際し、メソッドによってオーバーライドできる
遅延初期化を試みることができる
手順
対象のフィールドに対するgetおよびsetメソッドを定義する
フィールドへの参照、設定を上記メソッドに置き換える
フィールドをprivateにする
コンパイルしてテストする
func() {
setA(getA() * 2)
}
var _a int
getA() {
return _a
}
setA(i int) {
_a = i
}
楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本