技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

自己カプセル化フィールド【リファクタリング】

状況

  • フィールドに直接アクセスしている
_a = _a * 2


対処

  • そのフィールドに対するgetおよびsetメソッドを定義し、それらのメソッドを使用する


メリット

  • サブクラスがその情報の取り出しに際し、メソッドによってオーバーライドできる

  • 遅延初期化を試みることができる


手順

  • 対象のフィールドに対するgetおよびsetメソッドを定義する

  • フィールドへの参照、設定を上記メソッドに置き換える

  • フィールドをprivateにする

  • コンパイルしてテストする


func() {
    setA(getA() * 2)
}

var _a int

getA() {
    return _a
}

setA(i int) {
    _a = i
}


楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本