2017-02-27 49 views
1

該項目將對不同文件的集合(在ruby中)執行相同的分析。用幾個參數調用main.rb(包含文件的文件夾的路徑等等)。因此,main.rb包含解析器並收集給定文件夾中的所有文件,並調用函數find_spikes來收集文件。然後爲所有分析的文件生成一份報告。包裝函數和代碼結構的命名

所以, 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_spike功能執行,而find_spikes對每個文件適用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