Hashから値を取り出す時にもコードに意思を埋め込む
何気ないところでもコードに性格でますよね。下記のようにHashからvalueを取得するの一つとっても
hash = {name: 'foo'} hash[:name] # foo
下記のようにfetchを使う事でアクセスするキーが必ず存在することをコードで示せます。
動作が違うのはHash#fetchはキーが存在しない場合にKeyErrorがraiseされることです。
hash = {name: 'foo'} hash.fetch(:name) # foo
特に気にもせず前者の方法を使っていたのですが、Hash#fetchを使う事でアクセスする際にキーが無ければnilではなくエラーにすることで必ずキーが存在するはずだという前提条件を示す事が出来て便利。
csvやjsonを読み込んで特定のキーがある前提で処理をする時などはfetchを使う事でhash[:count].to_i
みたいに数値型のキーが間違っていても0になって気付かないとかは開発中にすぐに気付けて良さそうですね。