Правильное применение модификаторов доступа - PullRequest
0 голосов
/ 09 июля 2009

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

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

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

Ответы [ 6 ]

2 голосов
/ 09 июля 2009

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

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

0 голосов
/ 14 мая 2011

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

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

0 голосов
/ 09 июля 2009

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

0 голосов
/ 09 июля 2009

Любой учебный или учебный материал даст вам то же самое руководство, а именно то, которое уже дали вам другие публикации. Поэтому не ожидайте много полезной информации по этому конкретному вопросу от «ресурсов».

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

0 голосов
/ 09 июля 2009

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

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

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

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

...