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