2013-02-08 71 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