From 85b54178f3feae0e7f2c510afe7541d37d5c0f19 Mon Sep 17 00:00:00 2001 From: Zopolis4 Date: Sun, 21 Sep 2025 20:46:29 +1000 Subject: [PATCH] Add section for else branches after loop exit --- README.adoc | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/README.adoc b/README.adoc index 7b006ce4..63b51e68 100644 --- a/README.adoc +++ b/README.adoc @@ -1953,6 +1953,73 @@ end end ---- +=== `else` branches after loop exit [[else-after-loop-exit]] + +There is no need to wrap code inside an `else` when the `if` statement skips the rest of the loop. + +[source,ruby] +---- +# bad +[0, 1, 2, 3].each do |item| + if some_condition + do_something + next + else + do_something_else + end +end + +# good +[0, 1, 2, 3].each do |item| + if some_condition + do_something + next + end + + do_something_else +end + +# bad +[0, 1, 2, 3].each do |item| + if some_condition + do_something + break + else + do_something_else + end +end + +# good +[0, 1, 2, 3].each do |item| + if some_condition + do_something + break + end + + do_something_else +end + +# bad +[0, 1, 2, 3].each do |item| + if some_condition + do_something + return + else + do_something_else + end +end + +# good +[0, 1, 2, 3].each do |item| + if some_condition + do_something + return + end + + do_something_else +end +---- + == Exceptions === `raise` vs `fail` [[prefer-raise-over-fail]]