- http://itpro.nikkeibp.co.jp/article/COLUMN/20081125/319810/
- http://d.hatena.ne.jp/Yoshiori/20081202/1228193692
どう書く?という話題は定期的に上りますね。状況にも因るので一概にどれが正解とは言えないと思いますが、Webアプリなら私もcommonsのStringUtilsに一票いれておきます。
Railsの作者、DHHはRubyではnilもオブジェクトなのを良い事に
Object#blank? NilClass#blank? String#blank?
というメソッドを作ってしまった。ActiveSupportの黒魔術の一つ。Railsではこの魔法の力によってnilが返る可能性を気にせずに
if hoge.blank? # 何か処理 end
と書くことができます。
フレームワークにも因りますが、Webアプリではパラメータのキーそのものが無ければnullやnilとなり、キーがあって値が無ければ空文字になったりします。大抵の場合、どちらも入力されていないという扱いで十分ですので、nullと空白を同一の意味で扱ってもあまり問題ありません。Railsのblank?やStringUtils#isEmptyが短くて良いと思います。
ドメインロジック層で空白は良いが、nullは困るというならば、ドメイン層との境界でnullチェックをすべき。ドメインロジックのメソッドの最初にnullなら空文字にするという処理を入れる。もしくは、契約による設計的にnullが渡されたらぬるぽや引数エラーの例外をスローするコードを書いて、ドメイン層に渡す直前にnullならば空白にするという処理を入れるとか。
まぁ、目的によって最適なものを使いましょ。