私は、解析された文書をキーワードのデータベースと比較するコントローラを持っています。典型的なスニペットは、解析された文書をループするカプセル化されたループ、一致する単語の数を数え、一致する単語の配列を構築するキーワードのデータベースです。ここに例があります:コードの再ファクタリング - メソッドを分離するためにコードを移動する必要がありますか?
@key_words = KeyWords.all
@count = 0
@array_of_matching_words = []
@parsed_document.each do |a|
@key_words.each do |word|
if a =~ /#{key_word.word}/
@count = @count+1
@array_of_matching_words = @array_of_matching_words.push "#{key_word.word}"
end
end
@countと@array_of_matching_wordsのインスタンス化された変数の両方がビューに渡されます。私は単語の他のデータベースのためのそれらの断片の数を蓄積して、私は別の方法にこのコードのいくつかを移動してコードを再因子化しようとしています。私が検討しているオプションの
一つは、私は、ちょうど私のアクションコントローラに
get_the_number_and_the_list_of_matching_words
を残すコントローラ
def get_the_number_and_the_list_of_matching_words
@key_words = KeyWords.all
@count = 0
@array_of_matching_words = []
@parsed_document.each do |a|
@key_words.each do |word|
if a =~ /#{key_word.word}/
@count = @count+1
@array_of_matching_words = @array_of_matching_words.push "#{key_word.word}"
end
end
end
でプライベートメソッドにコードを移動することで、ビューが取得されます@countと@array_of_matching_wordsの両方
私はこのコーディング "スタイル"がひどいことがわかりました。 「get_the_number_and_the_list_of_matching_words」メソッドは青色で表示され、何もインスタンス化されず、パラメータは渡されず、インスタンス化された変数(@count、@array_of_matching_words)は表示されません(私の.rbファイルの末尾にプライベートメソッドのセクションを参照してください)。これは本当にコードを再因子化する良い方法ですか、それとも別のオプションがありますか?メソッドがインスタンスメソッドでも、パラメータを渡して新しい変数を返す必要がないメソッドでも、コードをメソッドに移動することは意味がありますか?
これらの種類の質問は、[コードレビュー](https://codereview.stackexchange.com)サイトに適しています。 – tadman