読者です 読者をやめる 読者になる 読者になる

空文字チェック

Java Ruby

どう書く?という話題は定期的に上りますね。状況にも因るので一概にどれが正解とは言えないと思いますが、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ならば空白にするという処理を入れるとか。

まぁ、目的によって最適なものを使いましょ。