公共静态变量从其他实例化类访问和修改,而不使用getter或setter

时间:2012-04-07 15:03:29

标签: c# xna

我一直在关注如何在C#+ XNA中编写基本的tile map编辑器的教程,我对使用的编码实践有疑问。主Game类包含许多公共静态变量,然后从其他实例化类中访问和修改,而不使用getter或setter。这是不好的编码练习吗? 链接到教程:http://www.youtube.com/watch?v=Tbs5EA-9Zfg

1 个答案:

答案 0 :(得分:5)

我不打算观看一堆视频只是为了查看有问题的代码,但如果这些是可变的类型,那么我肯定会说它在一般编码中的做法很差。静态变量最终会使单元测试变得更加困难,并且由于所有的全局状态,您的代码更难以推理。 UI代码经常违反了我的经验中的最佳原则 - 我确信它不会拥有,并且MVVM在WPF / Silverlight的这方面有所帮助。我尝试使用您在其他环境中习惯的最佳实践编写代码,但请记住可能与某些XNA应用程序相关的性能影响。

如果公共静态变量实际上是常量(不可变类型的只读变量)那么我对它没有太大的问题 - 尽管如果类型初始化器最终变得复杂,你可以获取类型初始化程序周期,可以是梦魇进行调试。我只是完成了blog post about that very topic的写作。即使变量是私有的并且通过属性访问,你也可能会遇到同样的问题,尽管在这种情况下你可以更容易地改变时间。