2017-02-27 4 views
1

プロジェクトは、(ルビーの)異なるファイルのコレクションに対して同じ分析を実行することです。 main.rbはいくつかの引数(ファイルといくつかのフォルダを含むフォルダへのパス)で呼び出されます。したがって、main.rbにはパーサが含まれており、指定されたフォルダ内のすべてのファイルが収集され、ファイルのコレクションにはfind_spikesという関数が呼び出されます。分析されたすべてのファイルに対して1つのレポートが生成されます。ラッパー関数とコード構造体の名前付け

ので、 main.rb:

options = { } 
optparse = OptionParser.new do |opts| 
    opts.banner = "Usage: example.rb [options]" 
    opts.on("-f", "--folder FOLDER", "Path to folder", String) { |v| options[:folder] = v } 
end 
optparse.parse! 

files = Dir.entries(options[:folder]).select { |entry| !(entry.start_with?('.') || entry.start_with?('..')) } 
files.map! { |entry| File.join(options[:folder], entry) } 

results = find_spikes(files) 
generate_report(results) 

run_steps.rbは実関数のラッパーが含まれています。

def find_spikes(file_names) 
    files_alarm = {} 
    file_names.each do |file| 
     input = File.read(file) 
     alarm = find_spike(input, files_alarm) 
     files_alarm[file] = alarm unless alarm.nil? 
    end 
    return files_alarm 
end 

find_spikesを繰り返し、各ファイルにfind_spike適用に対し、実際の分析は、find_spike関数で行われます。短いプロジェクトについて

は、私はいくつかの質問を持っている:

  1. はmain.rbのコード組織のいずれかの良い習慣はありますか?実際にメインファイルには何が含まれていますか?

  2. ラッパー関数と実際の解析関数を区別するためのfind_spikesとfind_spikeのベストネームは何でしょうか?テストのために、関数へのファイルパスではなく、ファイルのコンテキストを渡す必要があるためです。

答えて

1

main.rbのコード組織のいずれかの良い習慣はありますか?実際にメインファイルには何が含まれていますか?

入力ロジックと実際のドメインロジックを分離するスクリプトではなく、別の「クラス」を使用できます。したがって、クラスは個別にテストすることができます。

ラッパー関数と実際の解析関数を区別するためのfind_spikesとfind_spikeのベストネームは何でしょうか?

find_spikes_from_file_pathsfind_spikes_from_file_content

関連する問題