2

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

4

1 回答 1

5

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

如果公共静态变量是有效的常量(不可变类型的只读变量),那么我对它没有太大问题 - 尽管如果类型初始化程序最终变得复杂,您可以获得类型初始化程序循环,这可能是一场噩梦调试。我刚刚写完一篇关于那个主题的博文。即使变量是私有的并通过属性访问,您也可能会遇到同样的问题,尽管在这种情况下您可以更轻松地更改时间。

于 2012-04-07T15:08:28.937 回答