Kas*_*dum 3 c# global-variables
我目前正在使用大量渲染在C#中进行一个项目,并且在几乎所有类中都有一个用于缩放渲染的类型整数的常量值.我知道我可以在一个地方将这个常量定义为一个普通变量然后传递它,但这看起来真的很麻烦.何时可以在C#中使用静态变量?对我的问题最简单的解决方案是创建一个包含所有其他类可以引用的静态变量的类 - 这是不好的设计?
价值多么恒定?static对于现有的东西来说很好readonly,但如果不是 这样的话,你很快就会陷入混乱readonly- 特别是如果你有多个线程.缩放因子对我来说听起来不是一个常数 - 即它不是:
public const double ScaleFactor = 1;
Run Code Online (Sandbox Code Playgroud)
我会毫不犹豫地将静态变量用于我加载一次并且单独留下的东西.除此之外,我可能会封装(在您的情况下)某种RenderContext具有此值和任何其他实用方法的方法 - 并传递RenderContext方法之间; 如果您需要进行单元测试等,这也可以帮助您从底层实现中抽象出来.
当你发现你需要更多的属性(并且你不可避免地会有)时,你只需要扩展这个RenderContext类 - 没有别的变化.
(编辑)
另外 - 考虑未来:你会不会一次做多个渲染?因为我们现在都有很多核心,等等......如果所有线程共享一个值,静态就好了.有[ThreadStatic],但相比之下,这有点混乱.
设计还不错.实际上,使用公共或实用程序命名空间和公开静态方法和静态值的类将这些值集中在一个位置,以便您可以确保应用程序中的每个模块都使用适当的值.它的凝聚力低,但可以接受.我觉得没问题.