gpt4 book ai didi

r - R 和 Stata 中全局变量的危险示例

转载 作者:行者123 更新时间:2023-12-02 09:39:00 25 4
gpt4 key购买 nike

在最近与同学的对话中,我一直主张避免使用全局变量,除了存储常量。这是一种典型的应用统计类程序,每个人都编写自己的代码,项目规模偏小,因此人们很难看到马虎的习惯带来的麻烦。

在谈论避免全局变量时,我主要关注以下 全局变量可能引起麻烦的原因 , 但我想要一些 R 和/或 Stata 中的示例 遵循原则(以及您可能认为重要的任何其他原则),我很难提出可信的原则。

  • 非局部性:全局变量使调试更加困难,因为它们使理解代码流更加困难
  • 隐式耦合:全局变量通过允许远距离代码段之间的复杂交互来打破函数式编程的简单性
  • 命名空间冲突:公共(public)名称(x、i 等)被重用,导致命名空间冲突

  • 这个问题的一个有用的答案是一个可重现且自包含的代码片段,其中全局变量会导致特定类型的问题,理想情况下是使用另一个代码片段来纠正问题。如有必要,我可以生成更正的解决方案,因此问题的示例更为重要。

    相关 友情链接 :

    Global Variables are Bad

    Are global variables bad?

    最佳答案

    我也有幸向没有编程经验的本科生教授 R。我发现的问题是,大多数全局变量不好的例子都相当简单,并没有真正理解重点。

    相反,我试图说明the principle of least astonishment .我使用了一些很难弄清楚发生了什么的例子。这里有些例子:

  • 我要求全类写下他们认为 i 的最终值。将会:
    i = 10
    for(i in 1:5)
    i = i + 1
    i

    有些类(class)猜对了。然后我问你应该写这样的代码吗?

    在某种意义上i是一个正在改变的全局变量。
  • 以下代码返回什么:
    x = 5:10
    x[x=1]

    问题是我们所说的 x 到底是什么意思?
  • 以下函数是返回全局变量还是局部变量:
     z = 0
    f = function() {
    if(runif(1) < 0.5)
    z = 1
    return(z)
    }

    答:两者都有。再次讨论为什么这是不好的。
  • 关于r - R 和 Stata 中全局变量的危险示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526322/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com