猿问

全球变量是否不好?

全球变量是否不好?

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



月关宝盒
浏览 544回答 4
4回答

蓝山帝景

全局变量的问题在于,由于每个函数都可以访问这些函数,因此越来越难以确定哪些函数实际读取和写入这些变量。要了解应用程序的工作原理,您几乎必须考虑修改全局状态的每个函数。这可以做到,但随着应用程序的增长,它将变得越来越难以实际上不可能(或者至少完全浪费时间)。如果不依赖全局变量,则可以根据需要在不同函数之间传递状态。这样你就可以更好地理解每个函数的作用,因为你不需要考虑全局状态。

陪伴而非守候

重要的是要记住总体目标:清晰度“没有全局变量”规则是存在的,因为大多数时候,全局变量使得代码的含义不那么清晰。但是,像许多规则一样,人们会记住规则,而不是规则的目的。我已经看到程序似乎通过传递大量参数来简化代码的大小,以避免全局变量的恶。最后,使用全局变量可以使程序更清晰。通过无意识地坚持规则的话,原来的程序员已经失去了规则的意图。所以,是的,全局变量通常很糟糕。但是如果你觉得最终,程序员的意图通过使用全局变量变得更加清晰,那就继续吧。但是,请记住,当您强迫某人访问第二段代码(全局变量)以了解第一部分的工作原理时,会自动产生清晰度。

墨色风雨

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

肥皂起泡泡

只有在没有其他选择时才应使用全局变量。是的,那包括单身人士。90%的时候,全局变量被引入以节省传递参数的成本。然后发生多线程/单元测试/维护编码,你就遇到了问题。所以是的,在90%的情况下,全局变量都很糟糕。您在大学期间不太可能看到例外情况。我能想到的一个例外是处理固有的全局对象,例如中断表。像DB连接这样的东西似乎是全球性的,但事实并非如此。
随时随地看视频慕课网APP
我要回答