我想知道区分局部变量和全局变量有什么好处。在我看来,如果一切都成为全局变量,混乱就会少得多。
将所有内容声明为全局变量不会减少错误,因为不会在全局实例中错误地调用局部变量,从而遇到更少的错误吗?
我的逻辑在哪里错误?
其中一些归结为良好的编码实践。 将变量保留在本地还意味着将代码从一个应用程序共享到另一个应用程序变得更加简单,而不必担心代码冲突。 虽然使所有内容全局化更简单,但养成只在实际需要时才使用全局变量的习惯将迫使您更有效地编码,并使代码更加结构化。
我认为您的关键疏忽是认为告诉您局部变量不存在的错误是一件坏事 - 事实并非如此。你犯了一个错误,Ruby 告诉你。这种类型的错误通常很容易修复:你拼错了某些东西,或者你正在使用你忘记创建的东西。
任何地方的全局变量都可能会删除这些错误,但它们会用一组更难推理的错误来替换它们:不小心使用了另一段代码正在使用的变量。想象一下,如果每次调用一个函数(一个你自己的函数或一个标准库一个或一个来自 gem 的函数(时,你必须检查它可能会更改哪些全局变量(以及它调用了哪些函数,因为它也可能更改全局变量( 如果你犯了一个错误,那么你可能会收到一条错误消息(如果变量中对象的类发生了足够的变化(,但通常你只会默默地得到错误结果(如果您使用的变量的值意外更改(。
一般来说,全局变量更难处理,人们尽可能避免使用它们。
如果所有变量都是全局的,那么地球上每个程序员(包括那些尚未出生或已经死亡的人(编写的每个程序(包括尚未编写的程序(中的每一行代码都必须普遍、唯一地同意变量的名称。如果您使用的变量名称两年后不同大陆的其他人也将使用,则当一起使用时,您的两个程序都会中断。