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