QA@IT
«回答へ戻る

回答を投稿

@knsmrさん

おっしゃるとおりblank?present?はぬるぽ避けになって便利ではあるんですが、なるべく濫用を避け、Ruby標準のempty?any?none?等で間に合う場面では素直にそちらを使用するように心がけたいものです。
理由としては以下の2つが挙げられます。

  1. 明らかにArrayやHashのインスタンスしか取り得ない箇所で、empty?で済むはずなのにblank?と書かれていると、読み手はnilを考慮して敢えてそのように書かれているんだろうか、と深読みしてしまいます。同様に、nilかどうかを判定するためだけにblank?と書くのも悪手です。この場合nil?で充分ですし、falsyの判定だけならunless fooだけで間に合う場合も多いはずです。読者のことも考えて、必要十分なメソッドを選んで書かれているコードのほうが良いコードと言えます。

  2. スピード
    Ruby標準のempty?any?none?等を利用したほうがメソッド呼び出しの数が減って、実行速度が(ほんの少し)早くなります。

> @knsmrさん

おっしゃるとおり`blank?`や`present?`はぬるぽ避けになって便利ではあるんですが、なるべく濫用を避け、Ruby標準の`empty?`や`any?`、`none?`等で間に合う場面では素直にそちらを使用するように心がけたいものです。
理由としては以下の2つが挙げられます。

1. 明らかにArrayやHashのインスタンスしか取り得ない箇所で、`empty?`で済むはずなのに`blank?`と書かれていると、読み手はnilを考慮して敢えてそのように書かれているんだろうか、と深読みしてしまいます。同様に、nilかどうかを判定するためだけに`blank?`と書くのも悪手です。この場合`nil?`で充分ですし、falsyの判定だけなら`unless foo`だけで間に合う場合も多いはずです。読者のことも考えて、必要十分なメソッドを選んで書かれているコードのほうが良いコードと言えます。

2. スピード
Ruby標準の`empty?`や`any?`、`none?`等を利用したほうがメソッド呼び出しの数が減って、実行速度が(ほんの少し)早くなります。