Add AllowConsecutiveConditionals option to Style/GuardClause
Add AllowConsecutiveConditionals option to Style/GuardClause
https://github.com/rubocop/rubocop/pull/10503
RuboCop には以下のスタイルガイドに基づいた、Style/GuardClause
という Cop がある。
https://rubystyle.guide/#no-nested-conditionals
Nested Conditionals Avoid use of nested conditionals for flow of control. Prefer a guard clause when you can assert invalid data. A guard clause is a conditional statement at the top of a function that bails out as soon as it can.
# bad
def test
if something
work
end
end
# good
def test
return unless something
work
end
# also good
def test
work if something
end
# bad
if something
raise 'exception'
else
ok
end
# good
raise 'exception' if something
ok
# bad
if something
foo || raise('exception')
else
ok
end
# good
foo || raise('exception') if something
ok
def foo
if condition_a
do_something_a
end
if condition_b # <-- Style/GuardClause が指摘されるが同じレベルに条件文がある場合には両方のif保持したい
do_something_b
end
end
AllowConsecutiveConditionals
というオプションを追加(default は false)した。
true にした場合には、上記のようなケースの指摘が上がらなくなる。