问题描述
我正在创建一个与另一个人的主要代码接口的模块,所以这就是我想出的。一个子从主模块读取值并设置公共变量。另一个函数调用 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() 而不是它的坐标。