1

Rubyで、文字列を混乱( "SOME.String_With-bits.txt")からクリーンな文字列( "Some String With Bits")に解析しようとしています。簡単なメソッドを呼び出して、クリーンな文字列を取得できるようにしたいと思います。clean_string = NameParser::parse(messy_string)

ここでテスト可能な優れた設計を行おうとしていますが、構造を考え出すのに本当に苦労しています(実際の解析コードは問題ありません)。文字列の解析は非常に複雑なので、ステージを分離したいと思います。私はこれを試しました:

class NameParser
  def self.parse(name)
    name = self.correct_case(name)
    name = self.correct_whitespace(name)
    name = self.remove_extension(name)
    return name
  end


  def self.correct_case(name) ....
  def self.correct_whitespace(name) ....
  def self.remove_extension(name) ....
end

それは恐ろしいように見えます。私に何ができる?誰かがGithubのどこかに同様の実装を教えてもらえますか?

4

2 に答える 2

1

次のコードでそれができると思います:

class Object
  def chain_methods(start_value, *methods)
    methods.inject(start_value) { |last, method| self.send(method, last) }
  end
end

そして使用法:

NameParser.chain_methods(name, :correct_case, :correct_whitespace, :remove_extension)
于 2012-09-12T08:18:32.027 に答える
1

クラスベースのプログラミングを避け、代わりにオブジェクトベースのプログラミングを増やすには、すべての自己を削除できます。メソッドを作成し、必要に応じて便利なメソッド self.parse を作成します。

def self.parse string
  new.parse(string) 
end

または、初期化で文字列を使用してパーサーを作成します。正確にどのように使用するかによって、どちらが最適かは少し異なります。

于 2012-09-12T08:23:06.380 に答える