(A) Модули
и
(B) Классы с только Shared
функциями
решают одну и ту же проблему: оба позволяют логически группировать набор функций.
Преимущества использования модуля:
- Позволяет определить методы расширения .
- Для того, кто читает ваш код, сразу становится очевидным, что это не класс, представляющий группу объектов с состоянием, а просто «контейнер функций».
Преимущества использования класса с общими функциями:
- Его легко расширить с помощью instance (= не общих) переменных, функций и свойств позже.
Итак, если вы пишете набор вспомогательных функций и хотите логически сгруппировать их (где концепция состояния этой группы просто не имеет смысла), используйте модуль - это это именно то, для чего они здесь. С другой стороны, если у вас есть функция, которая концептуально соответствует уже существующему классу, добавьте ее как разделяемую функцию для этого класса.