通常哪个更适合全局缓存:全局变量,常量或类实例变量?
以下是每个例子:
module Foo
$FOO_CACHE = {}
def self.access_to_cache
$FOO_CACHE
end
end
module Foo
CACHE = {}
def self.access_to_cache
CACHE
end
end
module Foo
@cache = {}
def self.access_to_cache
@cache
end
end
Run Code Online (Sandbox Code Playgroud)
这最终是非常主观的,但我将逐个解决每个选项:
全局变量:没有 ...因为将一个全局变量放在一个模块(或一个类,或任何东西)中没有多大意义,无论如何它都会在各个范围内.除了你可以使用除全局变量以外的东西之外,你应该总是这样做.
常量:不 ...因为缓存不是常量!虽然Ruby没有强制执行常量不能改变,但这并不意味着你应该这样做.他们被称为常数是有原因的.
类实例变量:是的 ...因为它是这里唯一有意义的(虽然名称可能没有,但从技术上来说这是一个模块实例变量,但那是相当迂腐的).这是三者中唯一一个既具有语义意义又需要修改的内容,并且由某个范围封装.
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |