miniShop2
miniShop2 copied to clipboard
Исправить спецификаторы доступа в классах.
Разберём следующий пример легаси кода. Практически в любом классе miniShop вы найдёте открытые наружу (public) свойства. Это нарушает один из принципов ООП - инкапсуляцию. И рикошетом бьёт по остальным.
Напомню, что всего этих принципов 4:
- Абстракция
- Инкапсуляция
- Наследование
- Полиморфизм
Современные стандарты программирования допускают использование открытых свойств только в исключительных случаях. Например, при использовании объектов DTO. В большинстве случаев свойства должны быть закрыты. А управление ими лучше организовать при помощи открытых методов. Таким образом вы сможете создавать абстракции с помощью интерфейсов, использовать наследование и полиморфизм (т.е. перегружать методы в классах-наследниках). Кроме того, если вдруг потребуется, вы всегда можете повысить уровень видимости в классе-наследнике. А вот обратная операция невозможна - Fatal Error. А изменение модификатора в исходном классе нарушает обратную совместимость.
Открытые свойства в некоторых случаях могут пригодится для тестирования. Но их главный недостаток - невозможность их контролировать.