命名包装函数和代码结构

时间:2017-02-27 10:57:28

标签: ruby

该项目将对不同文件的集合(在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 个答案:

答案 0 :(得分:1)

  

main.rb中的代码组织有什么好的做法吗?事实上,主文件应该包括什么?

你可以有一个单独的"类"而不是用于分隔输入逻辑和实际域逻辑的脚本。所以课程可以单独测试。

  

find_spikes和find_spike能够区分包装函数和真实分析函数的最佳名称是什么?

find_spikes_from_file_pathsfind_spikes_from_file_content