在C/ c++中,全局变量像我的教授认为的那样糟糕吗?


当前回答

全局变量在小程序中很好,但如果在大程序中以同样的方式使用就很糟糕了。

这意味着你可以很容易地在学习中养成使用它们的习惯。这就是你的教授想要保护你的东西。

当你更有经验的时候,在他们没事的时候学习就更容易了。

其他回答

我的教授曾经说过这样的话:使用全局变量是可以的,如果你使用正确的话。我不认为我能正确地使用它们,所以我很少使用它们。

我想用另一个问题来回答这个问题:你使用singeltons吗/ singeltons不好吗?

因为(几乎所有)单变量的使用都是一个美化的全局变量。

使用全局变量有点像扫地毯下的灰尘。这是一种快速的解决方法,在短期内比用吸尘盆或吸尘器清理要容易得多。然而,如果你后来搬了地毯,下面会有一个大的惊喜。

是的,因为如果你让不称职的程序员使用它们(阅读90%,尤其是科学家),你最终会得到600多个全局变量分布在20多个文件和一个12000行的项目中,其中80%的函数采用void,返回void,完全在全局状态下运行。

除非你了解整个项目,否则你很快就不可能在任何一个点上理解正在发生什么。

重要的是要记住总体目标:清晰

“无全局变量”规则的存在是因为大多数时候,全局变量使代码的含义不太清楚。

然而,像许多规则一样,人们记住的是规则,而不是规则的意图。

我曾经见过一些程序,为了避免全局变量的危害,通过传递大量参数,使代码的大小增加了一倍。最后,使用全局变量将使程序对阅读它的人更清楚。由于盲目地遵守规则的文字,原来的程序员未能实现规则的意图。

所以,是的,全局变量通常不好。但是如果你觉得在最后,程序员的意图通过使用全局变量变得更加清晰,那么就继续吧。但是,请记住,当您强迫某人访问第二段代码(全局代码)以理解第一部分是如何工作的时,清晰度会自动下降。