miniShop2 icon indicating copy to clipboard operation
miniShop2 copied to clipboard

Исправить спецификаторы доступа в классах.

Open biz87 opened this issue 3 years ago • 0 comments

Разберём следующий пример легаси кода. Практически в любом классе miniShop вы найдёте открытые наружу (public) свойства. Это нарушает один из принципов ООП - инкапсуляцию. И рикошетом бьёт по остальным.

Напомню, что всего этих принципов 4:

  1. Абстракция
  2. Инкапсуляция
  3. Наследование
  4. Полиморфизм

Современные стандарты программирования допускают использование открытых свойств только в исключительных случаях. Например, при использовании объектов DTO. В большинстве случаев свойства должны быть закрыты. А управление ими лучше организовать при помощи открытых методов. Таким образом вы сможете создавать абстракции с помощью интерфейсов, использовать наследование и полиморфизм (т.е. перегружать методы в классах-наследниках). Кроме того, если вдруг потребуется, вы всегда можете повысить уровень видимости в классе-наследнике. А вот обратная операция невозможна - Fatal Error. А изменение модификатора в исходном классе нарушает обратную совместимость.

Открытые свойства в некоторых случаях могут пригодится для тестирования. Но их главный недостаток - невозможность их контролировать.

biz87 avatar May 09 '21 06:05 biz87