Я хочу определить глобальные методы. Для этого я определяю их подпись под глобальной единицей. Каковы недостатки этого? Почему это не рекомендуется?Определите методы под глобальной единицей. Недостатки?
ответ
Одним из недостатков использования глобальных методов может быть то, что они могут быть вызваны без явного указания объекта (только foo()
, а не global.foo()
), и это подвержено ошибкам. Например, если ваша структура имеет свой собственный метод с тем же именем, такой вызов рассматривается как вызов метода struct, а не глобального метода.
Говоря в целом, одним из принципов объектно-ориентированного программирования является то, что функции (методы) относятся к некоторому объекту/классу, а не к глобальным.
Вместо этого я рекомендую использовать sn_utils
. Это также одноэлементный как global
, но заставляет вас использовать его имя экземпляра: utils.foo()
. Вы должны быть уверены, что не загрязняете свое пространство имен, например. использование <evc-name>_foo()
как способ name.