Есть ли разница между глобальной функцией и переносом такой функции в класс пространства имен?

Предположим, у вас есть глобальный method(),

Вы можете переместить его в пространство имен и класс, и назвать его что-то вроде

\\Namespace\Class::method();

Есть ли разница? Один лучше другого?

По сути, вы ничего не изменили, и метод для всех целей и задач такой же глобальный, как и раньше — вы все равно можете вызывать его из любого места, но вам нужно вводить больше символов. Я пропустил что-то смущающее базовое?

0

Решение

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

Очень маловероятно, что вы бы назвали свой метод так:

\\Namespace\Class::method();

Вы гораздо чаще заявляете use Namespace\Class заявления в верхней части вашего файла, и просто сделать Class::method();,

И даже более вероятно (и, скорее всего, лучше) вы фактически создадите экземпляр реального объекта вместо использования статических методов (которые удобны, но могут нарушить инкапсуляцию). В вашем примере вы используете статический метод, который для многих людей не особенно объектно-ориентирован.

Функционально, рассматриваемый отдельно, нет реальной разницы между методом и функцией. Но метод имеет доступ к свойствам класса и закрытым методам, поэтому он также помогает вам создать систему, в которой обязанности распределены должным образом.

Но чтобы быть значимым, разница должна быть не только косметической. Если вы используете классы и объекты, читайте дальше SOLID принципы и шаблоны проектирования (понемногу) и использовать преимущества OOP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]