抽象化
抽象级别有助于确定何时拆分
通过使用越来越详细的代码实现功能来实现抽象。宏的入口点应该是一个具有高抽象级别的小程序,这使得一目了然的内容很容易掌握:
Public Sub DoSomething()
With New SomeForm
Set .Model = CreateViewModel
.Show vbModal
If .IsCancelled Then Exit Sub
ProcessUserData .Model
End With
End Sub
DoSomething
过程具有很高的抽象级别 :我们可以告诉它正在显示一个表单并创建一些模型,并将该对象传递给知道如何处理它的某个 ProcessUserData
过程 - 如何创建模型是另一个过程的工作:
Private Function CreateViewModel() As ISomeModel
Dim result As ISomeModel
Set result = SomeModel.Create(Now, Environ$("UserName"))
result.AvailableItems = GetAvailableItems
Set CreateViewModel = result
End Function
CreateViewModel
函数仅负责创建一些 ISomeModel
实例。部分责任是获取一系列可用项目 - 如何获取这些项目是在 GetAvailableItems
程序背后抽象的实现细节:
Private Function GetAvailableItems() As Variant
GetAvailableItems = DataSheet.Names("AvailableItems").RefersToRange
End Function
这里的过程是从 DataSheet
工作表上的命名范围读取可用值。它也可以从数据库中读取它们,或者值可以是硬编码的:它是一个实现细节,对于任何较高的抽象级别都不是一个问题。