Один из моих коллег занимается внедрением класса объектно-ориентированного программирования, и его профессор спросил:
Почему многие разработчики возражают против использования "защищенного" модификатора внутри/внутри классов?
Когда вопрос был поднят за обедом, мои коллеги и я не могли думать о причинах, по которым кто-то может возражать против использования модификатора protected
в классе. Устанавливая предпосылку вопроса в сторону (который предполагает, что многие разработчики фактически выступают против модификатора protected
, являются ли они?), Мы попытались выяснить, почему.
Лично, только раз, когда я использовал модификатор доступа protected
для класса, это когда я написал код, который я могу добавить в тестовую среду. Например, я могу написать базовый класс без отладочной информации, а затем создать новый класс для тестирования, наследовать из базового класса и переписать его методы, чтобы добавить в выходной код вывода до/после вызова базового метода. Полагаю, я мог бы так же легко использовать дизайн, который включает интерфейсы и инъекции зависимостей для достижения той же цели, но мой единственный опыт работы с protected
был для целей тестирования. В этом случае единственная причина избежать protected
заключается в том, что вы можете сделать то же самое лучшими способами.
Почему разработчики могут возражать против использования модификатора protected
в их дизайне ООП?
ПРИМЕЧАНИЕ. Поскольку профессор задает общий вопрос ООП, не относящийся ни к одному языку, я не уверен, что ответы могут быть взвешены по-разному из-за различных реализаций protected
в С#, Java и т.д.