【问题标题】:Many instance variables or hash with many keys? [closed]许多实例变量或具有许多键的散列? [关闭]
【发布时间】:2013-01-24 14:40:50
【问题描述】:

在 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

【问题讨论】:

  • 如果您保存任何内存,您将节省的内存将可以忽略不计。专注于使您的代码具有可读性和可维护性,从长远来看,您将节省更多的钱。
  • 因以误导性方式提出问题而被否决。如果您的问题是关于记忆的,那么应该提到记忆。

标签: ruby sinatra rack


【解决方案1】:

我认为你在正确的轨道上,很难从这个非常抽象的意义上提出建议,但总的来说 # 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>

【讨论】:

  • 我的意思是,如果使用哈希而不是大量实例变量,我会节省内存吗?
  • @AlanDert 你只说“会有什么好处吗?”在您的问题中,使用模型有好处,正确使用模型类是很好的可维护代码。但是节省内存?没有。一点也没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
相关资源
最近更新 更多