sle*_*ica 6 c global-variables
我正在创建一个小型Avida风格的生活模拟.我开始在一个文件中使用一个非常基本的,全部是全局的600行程序来测试一些想法,现在我想创建一个真正的设计.
除此之外,我有一个全局配置对象,其他每个函数都有一些东西.现在,我必须本地化对象并传递指针.事实上,大多数人都需要这个对象.我想到了三种可能的解决方案:
a)保持配置对象全局(最简单,但不是真正的解决方案)
b)在任何需要的地方存储指针(很容易,虽然浪费内存,因为一些小的普通旧数据结构需要它).
c)为需要访问选项的POD类型创建工厂,并让工厂对它们执行所有操作.
在我的想法中,只有(c)听起来合乎逻辑,但我不想让这种结构不必要地复杂化.你们会做什么?
我对新想法很满意,并会提供有关您想要了解的程序的任何信息.
提前致谢!
我必须同意@Carl Norum:您现在的全局配置设置没有任何问题。你说每个人都“从中得到了一些东西”。如您所知,当每个人都写入全局变量时,就会出现问题。就您而言,配置信息确实是全局需要的,因此应该是全局的。
如果你想让它更加解耦和受到保护——少一点全局性——那么为什么不添加一些读/写访问例程。
你看,到处存储指针并不能真正解决问题:它只会增加一层间接层,而这层间接层只会掩盖或伪装实际上让你紧张的全局访问。额外的间接层将为微小的小虫子爬入提供足够的空间。
所以,底线是:如果东西本质上是全球化的,那么就让它全球化,不要担心通常广泛接受的智慧,这些智慧大多是正确的,但在你的应用程序中可能不是正确的事情。在我看来,总是受到计算机科学老师制定的规则/宣传的约束,这是愚蠢的一致性的完美例子。