Вопрос

Я студент, ищущий ресурсы, которые могут помочь мне лучше понять, как правильно применять модификаторы доступа к элементам / типам при их кодировании.

Я знаю (на C #), какие ограничения имеют модификаторы доступа, такие как private, public, protected и т.д.поставьте на место.Когда я пишу свои собственные небольшие проекты, у меня есть тенденция просто делать все общедоступным.Я уверен, что это абсолютно ужасная практика, поскольку она просто выбрасывает инкапсуляцию в окно.Я просто никогда не знаю, когда правильно использовать что-то вроде internal vs.Частное.

Есть ли у кого-нибудь хорошие ресурсы, которые помогли бы мне понять правильное использование модификаторов доступа?

Это было полезно?

Решение

Это вопрос типа опыта.Начните с уровня наименьших привилегий и продвигайтесь вверх по мере необходимости.

Другими словами, сделайте все конфиденциальным.Пока вы не обнаружите, что его нужно повысить до уровня защищенного или общедоступного.Со временем вы получите представление о предполагаемом и позже обнаруженном использовании ваших занятий.

Другие советы

Я просто делаю доступ ко всему настолько ограниченным, насколько это возможно:

  • Закрытый по умолчанию
  • В противном случае внутренний, если это API, доступный другим классам в этой сборке
  • Или общедоступный, если это API, доступный вне сборки
  • Или защищенный, если он предназначен для вызова только из подклассов.

Начните делать все приватным.Если вы чувствуете необходимость, соответствующим образом измените модификатор, пока не почувствуете, что можете выбрать правильный тип.

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

Любой учебник или обучающий материал даст вам те же рекомендации, а именно те, которые уже были даны вам в других публикациях.Так что не ожидайте много полезной информации по этому конкретному вопросу от "ресурсов".

Основным ресурсом, который выходит за рамки этого, является код, написанный другими людьми.Возьмем большой проект на C # (например, Моно, или Резкое развитие), и изучите, как они конкретно следовали принципам, которые были вам объяснены.Кроме того, если у вас есть определенный класс для разработки, попробуйте придумать аналогичный класс в системных библиотеках и попытайтесь выяснить, как он реализован (либо просмотрев исходный код Mono, либо используя .ЧИСТЫЙ отражатель).

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

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

Каждый раз, когда вы наследуете от класса, вам нужно знать, как это работает, даже если ооп заключается в скрытии реализации.Вы можете скрыть реализацию, но вы не скроете документацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top