全局变量(再次)

2023-12-14

我一直听说全局变量应该never被使用,但我倾向于忽略”never”规则头脑发热。真的没有例外吗?
例如,我目前正在使用 SDL 用 C++ 编写一个小游戏。在我看来,拥有一个带有指向屏幕缓冲区的指针的全局变量很有意义,因为代表游戏中不同类型事物的所有不同类都需要 blit 到它,并且只有一个屏幕缓冲区。

请告诉我是否有例外,否则:

  • Why not,或者它们有什么不好以至于应该避免使用不惜一切代价(请稍微解释一下)
  • 如何才能实现这一目标,最好不必将其传递给每个构造函数以在需要时内部存储,或者传递给每次调用 Paint() 请求。

(我假设这个问题之前已经被问过,但是在搜索时找不到我需要的东西(解释和解决方法)。如果有人可以发布前一个问题的链接,那就太好了)


我们告诉学生永远不要使用全局变量,因为它鼓励更好的编程方法。这与我们告诉他们不要使用 goto 语句的原因相同。一旦您成为一名出色的程序员,您就可以打破规则,因为您应该知道何时合适。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全局变量(再次) 的相关文章

随机推荐

  • Java 9、10、11、12...等中的 javax.smartcardio

    从 Java 9 开始 javax smartcardio 库发生了什么 有替代方法或某种方式在 JAR 中获取它吗 在网上搜索了几个小时后 感谢上面的答案 据我了解 Java 9 及更高版本是模块化的 这是几年前计划的语言改进 此外 在新
  • 将两个导航控制器添加到一个选项卡栏项目

    我希望将 2 个导航控制器附加到一个选项卡栏项目 基本上 这个想法是在单个选项卡项上有 2 个视图 并且应该有一个导航栏来推动和弹出屏幕 与 iPad 中的设置应用程序相同 已编辑 看起来左侧有一个带有自己的导航控制器的视图 而右侧有另一个
  • 如何在 Swift 中增加 plus 设备上的字体和大小?

    我观察了一些流行的应用程序 当我们比较 iPhone Plus 设备和普通设备时 字体和图像是不同的 iPhone Plus 设备中稍大一些 我们如何在 iOS 应用程序中实现同样的目标 我已经使用过闪屏了 但字体仍然是相同的 在 plus
  • 为IE6中新打开的窗口设置OnLoad事件

    我需要为新弹出的窗口设置 onload 属性 以下代码适用于 Firefox a href www google com 但是 当我在 IE 中尝试此操作时 出现错误 printwindow document body null 或未定义
  • 从屏幕坐标查找世界坐标

    这个问题有很多答案 但我不确定它们都适用于 XTK 例如在 Three JS 中看到了多个答案 但显然 XTK 和 Three JS 没有相同的 API 使用射线和Matrix似乎与其他框架的许多其他解决方案非常相似 但我仍然没有掌握可能的
  • 算法 - 如何在 O(K) 中查找 Kt'h 元素并构建 O(n)

    我需要在 O k 中找到包含无序 n 元素的数组输入的 K 元素 满足以下要求 1 构建可以是O n 您可以使用给定的数组构建您想要的任何数据结构 2 找到O k 中的第k个元素 该算法在假设数组中没有重复元素的情况下工作 预处理 找到中间
  • 如何查看一个分支中的哪些提交不在另一分支中?

    我有两个分行devel and next 在开发中 我或多或少有大量的提交 一些提交是精心挑选的next 我还添加了一些提交到 next 并合并到devel 现在我想看看缺少什么next 这样我就可以在将更改提交之前详细测试它们next 我
  • 在android中创建一个定时服务

    我需要用java在android中创建一个日程服务 我尝试了一些代码 但在构建应用程序后它始终无法运行 我的逻辑很简单 我想创建一个服务来检查蓝牙文件夹路径中是否存在文件 如果该文件存在 那么该服务将运行另一个应用程序 我需要每 2 分钟运
  • StreamReader 不接受字符串?

    我正在尝试使用 StreamReader 读取文件 但使用时出现错误path 参数 1 无法从 string 转换为 System IO Stream 尽管从文档 那个你should能够使用字符串 我在这里缺少什么 public MyCla
  • 下一个导出脚本不适用于下一个/图像组件

    我有一个项目 我想构建并导出它 但出现错误 这是我的构建脚本package json file scripts build next build next export 这是我正在使用的组件next image import Image f
  • 如何检查Python字典中的内部字典中是否存在某个键?

    有一个Python字典 a b c x 1 y 2 z 3 我想知道是否a b c z 存在 但我还不知道是否a b c or a b 都存在 所以 如果我这样做 if z in a b c 我可能会得到一个 key c doesn t e
  • 为什么 C++ 模板类型匹配不检索引用限定符“&”?

    我有以下程序 include
  • 为什么在C语言中可以定义一个变量两次?

    我一直在测试全局变量 定义和声明 但我在这种情况下停了下来 main c include stdio h void func void int a int main void a 20 printf in main d n a func r
  • Java中如何通过分段请求上传大文件?

    我在用this教程上传大文件 但无法上传甚至 300KB 的文件 此外 它不会上传除 txt or log文件 需要可以帮助我上传大文件 无论文件类型如何 的指针 分享修改后的代码 public class MultipartUtility
  • sonarqube“应用项目排除”非常慢

    我们使用的是 sonarqube 5 1 1 应用项目排除 步骤通常非常非常慢 有时在 1 2 5 小时范围内 我们有 全局源文件排除 来排除 2 种模式 swagger ui min js 我不确定这是多久以前的更改 因为我们的 sona
  • Haskell第一步编译错误

    我刚刚从这里安装了完整的 Haskell 平台和安装程序https www haskell org platform mac html 现在 作为菜鸟 我创建了一个非常简单的程序 只是为了看看它是否有效 f Int gt Int f x x
  • 为什么每次我在 CosmosDB 文档资源管理器中查询 SELECT count(1) FROM c 时,它的值都会更改?

    我有一个包含大约 600 700 000 个文档的数据库 当我在文档资源管理器中执行 SELECT value count 1 FROM c 时 它返回的值范围从 64 000 到 72 000 看起来是随机的 当我使用 Python SD
  • 从 python 重新启动本地计算机

    有没有办法让电脑重启后运行Python程序 通用解决方案很好 但特别是我在 Windows 上 据我所知 没有通用的方法可以做到这一点 对于 Windows 您需要访问 Win32 API 就像这样 import win32api win3
  • 使用 Google 表格创建嵌套 JSON 对象

    我正在尝试自学一些 AppScript Javascript 作为练习 我想生成以下 JSON 对象 config type City Details config data city type MAJOR CITY city data c
  • 全局变量(再次)

    我一直听说全局变量应该never被使用 但我倾向于忽略 never 规则头脑发热 真的没有例外吗 例如 我目前正在使用 SDL 用 C 编写一个小游戏 在我看来 拥有一个带有指向屏幕缓冲区的指针的全局变量很有意义 因为代表游戏中不同类型事物