Rubyでnilを防ぐ方法

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年2月7日火曜日

Rubyでnilを防ぐ方法


Rubyでプログラミングをしていると結構頻繁にnilに悩まされることがありませんか?Rubyでは全てのオブジェクトはnilの可能性を含んでいるということを意識してプログラミングをするべきです。この記事ではRubyでnilを防ぐ方法をご紹介します。

文字列を期待する引数にnilが含まれている可能性がある場合など

例えば引数で受け取った文字列を結合して、その結果を返すメソッドがあるとします。nilかどうかをチェックしてから文字列の結合を行ってもいいのですが、下記のようにするとnilがあってもうまく結合して結果を返します。



compactは配列の中にnilがあった場合、取り除いてくれます。joinは引数で指定されたかたちで配列を結合します。上記の場合middle_nameがない人が入力してこようが、middle_nameがある人が入力してこようが、特に判定なしでも名前を返してくれます。

nilを空文字、0、空の配列にする方法

nilを空文字に変換する意外と知られていない方法があります。それはto_sメソッドです。nilにto_sをすると空文字("")が返されます。



同じ方法でto_iは0、to_aは空の配列が返ります。nilが減ることによりundefine method for nil classとエラーになる可能性が減るかもしれません。いちいち「nil?で判定して」という処理がなくなりますね。文字列へto_sをしてもオーバヘッドは最小となるので、あまり気にすることはありません。nil判定のためにロジックを書くほうが可読性も落ちてしまいます。ヘタしたらコストもかかるかもしれません。適切であればto_sメソッドをオススメします。ちなみにRubyではnilとfalse以外は真なので0は真となります(他の言語からRubyに移ってきた人は結構衝撃かもしれませんね)。

◯プログラミングtipsの記事一覧はこちら
◯Rubyのプログラミングの記事一覧はこちら



最近の投稿