Soo*_*uNe 4 ruby class-constants
我的一个ruby类从一个相当大的本地XML文件中提取数据,该文件只会随着新部署而改变.
在这种情况下,最佳做法是将文档保持为常量,例如:
class Product
XML_DOC = Nokogiri::XML(open("#{Rails.root}/myxmlfile.xml"))
end
Run Code Online (Sandbox Code Playgroud)
或者通过类方法访问文档,例如:
class Product
self.xml_doc
Nokogiri::XML(open("#{Rails.root}/myxmlfile.xml"))
end
end
Run Code Online (Sandbox Code Playgroud)
我认为类方法可能是要走的路,因为在测试中模拟会更容易,但是什么被认为是保持像这样的内存文件的最佳实践?
这是最常见的习语:
class Product
def xml_doc
@@xml_doc ||= Nokogiri::XML(open("#{Rails.root}/myxmlfile.xml"))
return @@xml_doc
end
end
Run Code Online (Sandbox Code Playgroud)
该||=运营商表示,"如果变量nil,计算expresion的结果,并且存储它,否则什么都不做".这个成语被称为"memoization".
不要将常量视为优化代码的一种方法,在Ruby中它们并不是真正的常量.
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |