许多实例变量或带有许多键的哈希?

时间:2013-02-08 18:41:38

标签: ruby sinatra rack

在Sinatra应用程序中,我有一个代码

gef '/123' do
  @var1 = # some calculations
  @var2 = # some calculations
  #..... many of them

  haml(:"view123")
end

并且所有实例变量都在view123中使用。我想,使用哈希代替许多变量会有什么好处:

gef '/123' do
  hash_var = {}
  hash_var[:var1] = # some calculations
  hash_var[:var2] = # some calculations
  #..... many of them

  haml(:"view123")
end

1 个答案:

答案 0 :(得分:2)

我认为你走在正确的轨道上,并且很难在这个非常抽象的意义上提出建议,但总的来说# some calculations看起来像商业逻辑。业务逻辑属于模型。

模型怎么样?创建一个执行这些计算的新类,然后实例化它并将实例传递给您的视图。您的控制器/路由处理程序仍然精简和干净,并且许多计算行都被隐藏在专用于该事物的文件中。干净整洁。

get '/123' do
  @calc = CrazyCalculator.new
  haml(:view123)
end

view123.erb:

<ul>
  <li>Calc1: <%= @calc.calc1 %></li>
  <li>Calc2: <%= @calc.calc2 %></li>
  <li>Calc3: <%= @calc.calc3 %></li>
  <li><!-- many other calculation methods --></li>
</ul>