shou2017.com
JP / EN

RuboCopからUse a guard clause instead of wrapping the code inside a conditional expression.と怒られたぞ

Thu Apr 18, 2019
Sat Aug 10, 2024

Railsチュートリアルをやっている時にRubocopから* RuboCop: Style/GuardClause: Use a guard clause instead of wrapping the code inside a conditional expression. [Style/GuardClause] と怒られました。

怒られたコードはこれ。

# ログイン済みユーザーかどうか確認
def logged_in_user
  unless logged_in?
    flash[:danger] = "Please log in."
    redirect_to login_url
  end
end

条件のネストが深すぎ、guard clauseを使えとのこと。

で、これをリファクタリングするとこうなる。

# ログイン済みユーザーかどうか確認
def logged_in_user
  return if logged_in?

  flash[:danger] = 'Please log in.'
  redirect_to login_url
end

Rubocop入れて初めてRailsチュートリアルを復習している最中ですが、わりと怒られる。なぜだ。

See Also