2016-09-20 2 views
0

これは文に条件を付ける有効な方法ですか?先日、1行に複数の文字を使用しているときに、複数の文字を使用していたのですが、& &や||レールで1行の条件文を使用する

@sales_opportunities << auction unless auction.company == current_user || !(auction.bids & current_user.bids).empty? || !auction.condition.include?(part.condition) 
+0

エラーが表示されたり、期待していなかった結果が得られましたか? –

+0

@JohnFeltz有効であるかどうかにかかわらず、 – gemart

+7

のような 'unless'の後に複数の条件を1行に入れても問題ないのでしょうか?それは判読不能です。リファクタリングし、条件をメソッドに移します。 –

答えて

4

いくつかの考え:

  1. あなたは確かにあなたがそうするならば
  2. 「ない限り」、あなたもして、彼らは適切な結果を返す確認する必要があるかもしれません後に1行に複数の条件を置くことができます||または& &が適切な範囲を持っていることを確認してください。
  3. これはかなり読みにくいです。私はこれらの条件文を引き出し、それぞれを独自の方法にすることをお勧めします。これにより読みやすくなります。他の場所でそれらの条件が必要な場合は、コードをよりドライにします。
+0

何かのように @sales_opportunities <<オークションオークションでない限り! || auction.includes_current_user_bid? || auction.doesnt_include_condition – gemart

+0

@SergioTulentsevの答えを見ると、彼は頭に釘を打つ。 –

2

@CaptainChaosと@PascalBetzは言った。最低でも、その状態の部分を説明的な名前のローカル変数に抽出します。このようなもの:

insider_user  = auction.company == current_user 
user_placed_bids = (auction.bids & current_user.bids).present? 
part_matches  = auction.condition.include?(part.condition) 

@sales_opportunities << auction unless insider_user || user_placed_bids || !part_matches 

これはもっと管理しやすくなっていますか?

+0

この場合、キーワード 'or'は' || 'より読みやすくなります。 – Aetherus

+0

@Aetherus:議論の余地があります。私は条件付きで 'または'を見ると、私は私の歯を握りしめます:) –

関連する問題