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