Определите методы в глобальном блоке. Недостатки?

Я хочу определить глобальные методы. Для этого я определяю их подпись под глобальным блоком. Каковы недостатки этого? Почему не рекомендуется?


person Assaf    schedule 17.09.2015    source источник


Ответы (2)


Одним из недостатков использования глобальных методов может быть то, что их можно вызывать без явного указания объекта (просто foo(), а не global.foo()), что чревато ошибками. Например, если ваша структура имеет собственный метод с таким же именем, такой вызов рассматривается как вызов метода структуры, а не глобального метода.

Говоря в более общем плане, один из принципов объектно-ориентированного программирования заключается в том, что функции (методы) принадлежат некоторому объекту/классу, а не являются глобальными.

person Yuri Tsoglin    schedule 18.09.2015

Вместо этого я рекомендую использовать sn_utils. Это также синглтон, как и global, но вынуждает вас использовать его имя экземпляра: utils.foo(). Вы должны знать, что не загрязняете его пространство имен, например. используйте <evc-name>_foo() в качестве имени метода.

person Thorsten    schedule 18.09.2015