2013-02-08 58 views
-3

在西纳特拉应用程序,我有一个代码许多实例变量或散列与许多键?

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 
+0

你可以节省将是微不足道的,如果你保存任何的一切记忆。专注于使您的代码易读易维护,长远来看,您将节省更多的资金。 – AlexQueue 2013-02-08 19:10:30

+0

Downvoted以误导的方式提问。如果你的问题是关于记忆,它应该提及记忆。 – matt 2013-02-08 21:39:32

回答

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> 
+0

我的意思是,如果使用散列代替大量实例变量,我会保存内存吗? – 2013-02-08 18:55:45

+0

@AlanDert你只说“会有什么好处?”在你的问题中,使用模型是有好处的,这是良好的可维护代码,可以正确使用模型类。但是保存内存?不。一点也不是。 – 2013-02-08 18:59:42