Prefer Hash#fetch over Hash#[]
Hash#fetch is prefered over Hash#[] because it makes you think about how you want to handle the possibility of the key not being defined. This helps avoid a bunch of subsequent nil checks, especially if you’re getting data from an external source. If you’re trying to be careful about introducing nils, using fetch can be really helpful.
Bad 🔗
hash = { a: "1" }
hash[:b] # => nil
Good 🔗
An KeyError exception can help you write less brittle code because it’s harder to introduce the possibility of nil.
hash = { a: "1" }
hash.fetch(:b) # raises KeyError
It’s even better when you know what a good default value should be when a key is not defined:
hash = { a: "1" }
hash.fetch(:b, "go fish") # => "go fish"