Я использую «защищенный» вместо «приватный», потому что когда-нибудь мне понадобится расширить свои классы, это плохо? - PullRequest
2 голосов
/ 09 февраля 2011

Я заметил шаблон в моем коде. Я обычно выбираю protected вместо private в качестве метки доступа по умолчанию для "скрытых" методов и полей в моих классах. Я делаю это главным образом потому, что он скрывает подробности о функционировании класса для пользователей класса, оставляя место для расширения в будущем. Есть ли какой-либо недостаток в этой «политике» кодирования?

Спасибо.
Tunnuz

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011

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

Хорошая причина игнорировать то, что я сказал о частных методах, это если вы хотитепроверить свои внутренние функции, т. е. в модульном тесте.В C # вы можете позволить другому проекту видеть ваши защищенные методы извне, чтобы вы могли писать тесты против них.

2 голосов
/ 09 февраля 2011

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

1 голос
/ 09 февраля 2011

Я не думаю, что есть недостаток.

  • Закрытые переменные - это переменные, которые видны только классу, к которому они принадлежат.
  • Защищенные переменные - это переменные, которыевидны только классу, к которому они принадлежат, и любым подклассам.

Так что все должно быть в порядке с вашим кодом.В этом нет ничего плохого.Если вы, вероятно, расширите свой класс, защищенное свойство будет определенно правильным.

...