抽象化
抽象級別有助於確定何時拆分
通過使用越來越詳細的程式碼實現功能來實現抽象。巨集的入口點應該是一個具有高抽象級別的小程式,這使得一目瞭然的內容很容易掌握:
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
工作表上的命名範圍讀取可用值。它也可以從資料庫中讀取它們,或者值可以是硬編碼的:它是一個實現細節,對於任何較高的抽象級別都不是一個問題。