我在表单类 A 中有一个Private Sub Modify()
来处理按钮或标签的行为(两者都属于同一个 A 类)。
让我们说这样做:
Private Sub Modify()
btnFoo.Enabled = True
lblBar.Text = "labelbar"
End Sub
如果我将Private Sub Modify()
从表单类A移动到模块B并将其命名为Public Sub Modify
,我只需更改相同按钮或标签的行为即可:< / p>
Public Sub Modify()
A.btnFoo.Enabled = True
A.lblBar.Text = "labelbar"
End Sub
但考虑到模块是某种静态元素,这是否会有所帮助? 我想知道这个方法,所以我可以跟上好的做法。
提前致谢。
答案 0 :(得分:1)
对于模块,类或其他任何东西来说,访问另一个对象的属性几乎从来都不是一个好主意。如果不出意外,它会中断The Law of Demeter。更一般地说,在表单之外的任何东西直接操作任何表单的控件都不是一个好主意。我认为,默认情况下,控制权是公开的,这是令人遗憾的。最好将Modify
方法保留在表单上,如果需要从表单外部调用它,只需将其设为Public
。
答案 1 :(得分:1)
如果你走这条路,你最终会有很多模块在很多表格中改变很多东西......如果你想用新功能扩展程序或修复bug,你会讨厌代码的复杂性
更好的规则是:在表格中完成关于表格的所有内容。
为什么您真的想将该代码提取到模块中?是因为你会以多种形式做同样的事情吗?在这些情况下,可能有意义地提取此类代码,但不要让模块知道特定的形式。相反,你可以做
Public Sub Modify(button As Button, label As Label)
button.Enabled True
label.Text = "labelbar"
End Sub
并使用
在多种表单中调用它Private Sub ChangeElements()
Modify(btnFoo, lblBar)
End Sub
但同样,最好将这些内容留在表格中。