Должен ли я всегда полностью квалифицировать метод и классы в VBA - PullRequest
0 голосов
/ 21 марта 2020

У меня вопрос: Должен ли я всегда полностью квалифицировать методы и классы в 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

Мне кажется, что всегда полностью квалифицированные имена могут увеличивать "кодовый шум" в кодовой базе и, как следствие, усложнить понимание кода.

1 Ответ

2 голосов
/ 21 марта 2020

Вам вообще не нужно делать это с вашим собственным кодом.

Назовите ваши классы / методы описательно, чтобы избежать коллизий. Избегайте обобщенных c имен.

Итак, ваш CollectionExt я бы вместо этого назвал LapisCollection. Это всего на 2 символа больше и дает вам полное происхождение класса без квалификации. Единственный раз, когда вам когда-либо придется проходить аттестацию, это когда кто-то другой пишет модуль / надстройку под названием «Lapis» и использует те же соглашения, и он включается вместе с вашим кодом ... тогда вы получаете все виды головной боли в любом случае, как конфликты имен модулей!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...