【问题标题】:Public static variables accessed and modified from other instantiated classes without the use of getters or setters从其他实例化类访问和修改的公共静态变量,无需使用 getter 或 setter
【发布时间】:2012-05-01 09:34:23
【问题描述】:

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

【问题讨论】:

标签: c# xna


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 2014-01-22
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多