vba - 我是否应该始终完全限定 VBA 中的方法和类
问题描述
我的问题是:我是否应该始终完全限定 VBA 中的方法和类?
Lapis.CollectionExt.Sort
这是一个单元测试,它在使用方法后检查给定集合的排序位置。
Lapis
是我正在开发的插件的名称。ExUnit
和CollectionExt
是标准模块的名称。GetSig
方法创建当前执行方法的完整签名(模块名称和方法名称)。
完全限定的方法和对象
Private Sub SortTest()
On Error GoTo ErrHandler
Const MethodName = "SortTest"
' Act
Dim Actual As VBA.Collection
Set Actual = Lapis.CollectionExt.Sort(Lapis.CollectionExt.Make(3, 2, 1), New Lapis.LongComparer)
' Assert
Dim Expected As VBA.Collection: Set Expected = Lapis.CollectionExt.Make(1, 2, 3)
Lapis.ExUnit.AreEqualSets Expected, Actual, New Lapis.LongEqualityComparer, GetSig(MethodName)
Exit Sub
ErrHandler:
Lapis.ExUnit.TestFailRunTime GetSig(MethodName)
End Sub
最低限度限定的方法和对象
Private Sub SortTest()
On Error GoTo ErrHandler
Const MethodName = "SortTest"
' Act
Dim Actual As Collection
Set Actual = CollectionExt.Sort(CollectionExt.Make(3, 2, 1), New LongComparer)
' Assert
Dim Expected As Collection: Set Expected = CollectionExt.Make(1, 2, 3)
ExUnit.AreEqualSets Expected, Actual, New LongEqualityComparer, GetSig(MethodName)
Exit Sub
ErrHandler:
ExUnit.TestFailRunTime GetSig(MethodName)
End Sub
我觉得总是完全限定的名称会增加代码库中的“代码噪音”,从而使代码更难理解。
解决方案
你根本不需要用你自己的代码来做这件事。
描述性地命名您的类/方法,以免它们发生冲突。避免通用名称。
所以,你的 CollectionExt 我会倾向于命名 LapisCollection。它仅多出 2 个字符,无需资格即可为您提供课程的完整来源。唯一一次你必须获得资格的情况是,如果其他人编写了一个名为“Lapis”的模块/插件并使用相同的约定,并且它与你的代码一起包含......那么你会得到各种各样的头痛无论如何,就像模块名称冲突!
推荐阅读
- javascript - JavaScript - 映射 + 字符串化数据
- django - 模型试验建议
- spring - Mockito.when().thenReturn() 不能使用 Kotlin 和 SpringTest 处理 @MockBean 对象
- firebase - 带有 Helper.Provider-Model 的 Flutter 中的延迟加载列表视图构建器
- node.js - 按顺序执行js
- sql - 如何将日期划分为静态时段
- java - 快速排序降序数组
- c# - MySQLConnector DLL 错误 System.Threading.Tasks.Extensions 链接
- reactjs - 从没有 setState 的输入更新对象
- python - python脚本关闭时如何保存值