微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改函数内的公共变量是否可以,或者这是不好的做法?

如何解决更改函数内的公共变量是否可以,或者这是不好的做法?

我正在创建一个与另一个人的主要代码接口的模块,所以这就是我想出的。一个子从主模块读取值并设置公共变量。另一个函数调用 setvariables 函数,然后使用设置的值执行计算。我的函数将在主模块 (Module1) 中调用。这是一种好的编码习惯,还是有更好的方法来做到这一点?

例如:

Module Module2
    Public x as Single
    Public y as Single
    Public z as Single

    Public Function calculate(i as Short,j as Short) as Single
        setvariables(i,j)
        r = x^2 + y^2 + z^2
        return r
    End Function

    Public Sub setvariables(i as Short,j as Short)
        x = Module1.structure1(i).structure2(j).valuex
        y = Module1.structure1(i).structure2(j).valuey
        z = Module1.structure1(i).structure2(j).valuez
    End Sub
End Module

编辑:以下是 Module1 的示例:

Module Module1
    ' declare Public Structures
    ' do stuff
    ' do more stuff
    Private Sub doThisThing()
        ' do some stuff
        For i = 1 To 10
            For j = 1 To 10
                r(i,j) = Module2.calculate(i,j)
            Next
        Next
    End Sub
End Module

解决方法

它有效。在这种情况下,这本身可能意味着值得这样做。但是如果您在不同的库/项目之间移动 2 个模块,引用可能会循环,导致它无法正确加载。或导致它根本无法编译。

编程的法则是,永远不要让事物“依赖”于它的访问者。

一种解决方法是在另一个模块中定义结构,并将对象传递给calculate() 而不是它的坐标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。