2011-06-23 14 views
-4

私は元のコードでかなり良いハックとスラッシュを行いましたが、モジュール内の別のファイルにチェックを入れずに、これを圧縮する方法は見られません。/X /ので、彼らはそれ以上を組み合わせることができないとき、正規表現のテキストは、私はあなたがcouldntのように、私はあなたの実際のコードでそのdifferntことを前提としていこのコードを少しリファクタリングする方法はありますか?

case state 
     when /OH|PA|MN/ 
     if @browser.text.include?("My text") 
      raise "x" unless /foo/.match(@browser.text) 
      raise "y" unless /foo2/.match(@browser.text) 
      raise "z" unless /foo3/.match(@browser.text) 
     else 
      raise "x1" unless /foofoo/.match(@browser.text) 
      raise "y1" unless /foofoo2/.match(@browser.text) 
      raise "z1" unless /foofoo3/.match(@browser.text) 
     end 
     when /IL|VA/ 
     if @browser.text.include?("My text") 
      raise "x" unless /foo/.match(@browser.text) 
      raise "y" unless /foo2/.match(@browser.text) 
      raise "z" unless /foo3/.match(@browser.text) 
     else 
      raise "x1" unless /foofoo/.match(@browser.text) 
      raise "y1" unless /foofoo2/.match(@browser.text) 
      raise "z1" unless /foofoo3/.match(@browser.text) 
     end 
     when /WI|SC|TN|IN|IA/ 
     if @browser.text.include?("My text") 
      raise "x" unless /foo/.match(@browser.text) 
      raise "y" unless /foo2/.match(@browser.text) 
      raise "z" unless /foo3/.match(@browser.text) 
     else 
      raise "x1" unless /foofoo/.match(@browser.text) 
      raise "y1" unless /foofoo2/.match(@browser.text) 
      raise "z1" unless /foofoo3/.match(@browser.text) 
     end 
     when /SC/ 
     if @browser.text.include?("My text") 
      raise "x" unless /foo/.match(@browser.text) 
      raise "y" unless /foo2/.match(@browser.text) 
      raise "z" unless /foo3/.match(@browser.text) 
     else 
      raise "x1" unless /foofoo/.match(@browser.text) 
      raise "y1" unless /foofoo2/.match(@browser.text) 
      raise "z1" unless /foofoo3/.match(@browser.text) 
     end 
     when /GA/ 
     if @browser.text.include?("My text") 
      raise "x" unless /foo/.match(@browser.text) 
      raise "y" unless /foo2/.match(@browser.text) 
      raise "z" unless /foo3/.match(@browser.text) 
     else 
      raise "x1" unless /foofoo/.match(@browser.text) 
      raise "y1" unless /foofoo2/.match(@browser.text) 
      raise "z1" unless /foofoo3/.match(@browser.text) 
     end 
     else 
     raise "Not a valid state" 
     end 
+2

これは真剣に何を返すエラーを選択するのですか? –

+1

この種の質問は、コードレビュースタックエクスチェンジに投稿してください。しかし、4つのダウンボントを取得している場合は、別の何かを間違って実行している可能性があります。 –

+1

私はCode Reviewの人々が私たちにそれを返すと思います。 :-) –

答えて

1

について考えることができることを毎に異なる

if state =~/OH|PA|MN|IL|VA|WI|SC|TN|IN|IA|SC|GA/ 
    if @browser.text.include?("My text") 
     raise "x" unless /foo/.match(@browser.text) 
     raise "y" unless /foo2/.match(@browser.text) 
     raise "z" unless /foo3/.match(@browser.text) 
    else 
     raise "x1" unless /foofoo/.match(@browser.text) 
     raise "y1" unless /foofoo2/.match(@browser.text) 
     raise "z1" unless /foofoo3/.match(@browser.text) 
    end 
else 
    raise "Not a valid state" 
end 

今すぐできるようになりました。あなたが本当に答えを求めていたのなら、なぜ簡単に減らすことができる偽のコードを投稿しましたか?

+1

実際のコードはプロプライエタリなビジネス言語であり、私は仕事を失う危険がありませんので、私は偽のコードを投稿しました.. – SamuraiJack

+1

同じコードブロックを実行するときに 'case'文を書く必要はありません。コードが独自のものである場合は投稿しないでください。ただし、これより少し上手くいくことができなければ、役に立たない回答、誤解、 – loosecannon

1
raise "Not a valid state" unless %w[OH PA MN IL VA WI SC TN IN IA SC GA].include?(state) 
if @browser.text.include?("My text") 
    raise case @browser.text 
    when /foo/; "x" 
    when /foo2/; "y" 
    when /foo3/; "z" 
    end 
else 
    raise case @browser.text 
    when /foofoo/; "x1" 
    when /foofoo2/; "y1" 
    when /foofoo3/; "z1" 
    end 
end 
関連する問題