1

この質問がどこかで答えられている場合は申し訳ありませんが、Google の言い回しが正しいとは確信していません。また、どのスタイル ガイドでも見たことがありません。

Ruby には条件で否定性を示す方法が複数あるため、一部が true で一部が false であることを確認する条件を記述するには、どのような方法が望ましいでしょうか? 例:

if array && !array.include?('Bob')
  #do stuff!

しかし、次のようにも言えます。

if array
  #do stuff! unless array.include?('Bob')

また:

if array && not array.include?('Bob')
  #do stuff

また:

if !array.nil? && !array.include?('Bob')

または風変わりなダブル:

unless array.nil?
  #do stuff unless array.include?('Bob')

そして他にもいくつか。最もRubyらしいと考えられているアイデアはありますか? あなたの意見を裏付ける情報源は?

4

2 に答える 2

1

文書化されたガイドラインに関する限り、私が考えることができる唯一のことは、「 and を使用しないでください。代わりに常にandandを使用してください」と警告する Google ガイドです。 or&&||

それ以外は、文脈によって多少異なります。1 つの条件が true で、もう 1 つの条件が false の場合に実行されるコードしかない場合は、それらを単一の if に入れます&& !

if array && !array.include?('Bob')
  #do stuff!

一方、2 番目の条件も true であっても、最初の条件が true の場合に実行される追加のコードがある場合があります。その場合、ネストされたunlessorifは理にかなっています:

if array 
    do stuff! unless array.include? 'Bob'
    do other stuff anyway
end
于 2012-04-22T01:24:38.243 に答える
0

読みやすさは向上しませんが、それでも興味深いものです。

Rails を使用している場合は、次tryのように ActiveSupport 拡張機能を使用できます。

if array.try(:include?, 'Bob')
  # Do stuff
于 2012-04-22T09:37:31.903 に答える