Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | データの再編成 | フィールドのカプセル化

内容

適用ケース要約

フィールドがそのまま公開されている

適用内容要約

フィールドを非公開にして、アクセサから取得させるようにする

適用詳細

Javaの場合はpublicのフィールドをprivateに変更して
getter、setterを追加する。

Rubyの場合はattr_accessorを設定する。
意図したアクセス権限にしたい場合は以下のように使い分けが可能

アクセサ 内容
attr_accessor 読み書き可能(getter+setter)
attr_reader 読み取り専用(getterのみ)
attr_writer 書き込み専用(setterのみ)
サンプル

人に名前がある、という機能を実装します。
Rubyで実装していますが、元々Rubyはフィールドを外部に公開しないため
リファクタリング後のみです。

サンプルコード

リファクタリング

class Person
  attr_accessor:name
  def initialize(name)
    @name=name
  end
end

tanaka = Person.new("tanaka")
puts tanaka.name

出力(共通)

tanaka