Skip to content

Commit

Permalink
Extend safe navigation docs about long &. chains
Browse files Browse the repository at this point in the history
  • Loading branch information
fatkodima committed Sep 12, 2024
1 parent e66a93a commit 3f97718
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -325,32 +325,33 @@ foo&.bar

=== Safe navigation

Avoid chaining of `&.`. Replace with `.` and an explicit check.
Avoid chains of `&.` longer than two. Replace with `.` and an explicit check.
E.g. if users are guaranteed to have an address and addresses are guaranteed to have a zip code:

[source,ruby]
----
# bad
user&.address&.zip
user&.address&.zip&.upcase
# good
user && user.address.zip
user && user.address.zip.upcase
----

If such a change introduces excessive conditional logic, consider other approaches, such as delegation:
[source,ruby]
----
# bad
user && user.address && user.address.zip
user && user.address && user.address.zip && user.address.zip.upcase
# good
class User
def zip
address&.zip
end
end
user&.zip
user&.zip&.upcase
----

=== Spaces and Braces [[spaces-braces]]

No spaces after `(`, `[` or before `]`, `)`.
Expand Down

0 comments on commit 3f97718

Please sign in to comment.