[Rails Best Practice]Tell, don’t ask[訳]

Rails Best Practice

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

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

コメント

タイトルとURLをコピーしました