https://rails-bestpractices.com/posts/2012/09/29/tell-don-t-ask/
偉大な本家様
自分の勉強用に Rails Best Practiceシリーズを翻訳します。
Before
birth_yearメソッドは、userにbirthdayを聞いてyearを取得し、birthdayがなければそれに応じて応答します。
def birth_year(user)
if user.birthday
user.birthday.year
else
'No birthday year on file'
end
end
Refactor
userに誕生日の年を提供するように伝え、それがあるかないかで首尾一貫した反応を期待しているはずです。
def birth_year(user)
user.birthday.year
end
class User
def birthday
@birthday || NullBirthday.new
end
end
class NullBirthday
def year
'No birthday year on file'
end
end
コメント