前几天我在#ruby-lang 频道上与某人讨论了@@class_variables
. 当用户询问跟踪连接到他的服务器的用户的最佳方式是什么时,这一切都开始了(我稍微简化了它,但这就是它的要点)。
所以,我建议:
class User
@@list = {} #assuming he wants to look up users by some type of ID
def initialize(user_id, ...)
@@list[user_id] = self
#...
end
end
然而,somone 说这里使用全局状态被认为是不好的做法。
我理解为什么全局状态对依赖多个后端的东西不利,因为全局状态的全局部分不再如此全球化,而是本地化到那个后端。或者它会干扰依赖注入。
不过,我真的想不出任何其他原因导致这很糟糕。而且,如果并发性成为问题(需要多个后端),那么我们可以更新代码以使用 Redis(或类似的东西)。
另外,我在programmers.sxc 上发现了这个问题,但这并不能帮助我理解为什么上面的代码被认为如此糟糕?另外,还有什么替代方案?