Make Style/GuardClause
a bit more lenient when the replacement would make the code more verbose
#10740
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We currently have an exception in
Style/GuardClause
when the suggested replacement would be too long.RuboCop suggests replacing this with:
However, this makes the code more verbose (adds a line that doesn't really add any benefit) and harder to understand (since this only happens when the line is too long, it's a safe assumption that the condition is long, and flipping it with
unless
adds cognitive overhead).This exception is not covered in the style guide either, so it should be "non-breaking".
My proposal here is that if the guard clause is too line but what is inside the
if
is trivial (a single statement, and not a nested if), it will not be registered as an offense.Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.md
if the new code introduces user-observable changes. See changelog entry format for details.