Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
6 / 6 / 3
Регистрация: 04.10.2009
Сообщений: 202

Какими правилами следует руководствоваться при назначении доступа private/public для полей?

04.10.2020, 11:20. Показов 3354. Ответов 7
Метки .net (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Вот несколько тезисов в виде рекомендаций, которые я выделил при поиске информации на данную тему:
- все поля должны иметь модификатор private, а внешний доступ организован через свойства;
- особо важная информация обязательно private, а public для остальных случаев.
Что касается protected с ним всё понятно, поэтому я его не стал упоминать. Мне больше интересно как на практике решается вопрос с private/public ? Буду признателен за любую информацию: статья, книга и.т.п.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2020, 11:20
Ответы с готовыми решениями:

Как переделать с public на private и создать методы для закрытых полей?
Очень простой вопрос , но я только сегодня начал учить классы и возник такой вопрос - Как переделать с public на private и создать методы...

Модификаторы доступа public, private, protected
Есть ли в Си модификаторы доступа public, private, protected?

Вопрос про Спецификаторы доступа Public и Private
Читаю Дейтлов... Дошел до объяснения спецификаторов и не могу понять 2 предложения: Еще: class GradeBook { public: ...

7
Пора на C++?
 Аватар для TrickyBestia
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
04.10.2020, 11:23
Цитата Сообщение от serega721 Посмотреть сообщение
Какими правилами следует руководствоваться при назначении доступа private/public для полей?
Логикой.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
04.10.2020, 11:29
serega721, private public как раз самое простое. Если снаружи доступ нужен - паблик, если нет - приват. И не забывать про ваш первый пункт со свойствами
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
04.10.2020, 11:31
Цитата Сообщение от serega721 Посмотреть сообщение
особо важная информация обязательно private
Не особо важная, а та, которую менять не надо, или та, которая не интересна другим (но нужна для работы объекта / класса).
Например - есть Stack на основе массива. Массив - закрытый, и не зря, ведь если к нему можно просто так взять и получить доступ - то идея стека теряется, и более того поломать объект стека - как нечего делать. Потому он и скрыт. Напишите свой класс Stack - поймете.
1
6 / 6 / 3
Регистрация: 04.10.2009
Сообщений: 202
04.10.2020, 11:45  [ТС]
Цитата Сообщение от Enifan Посмотреть сообщение
Не особо важная, а та, которую менять не надо, или та, которая не интересна другим
Понял, а как быть с той информацией которая нужна другим и все её меняют. Справедливо ли данное поле делать private, а доступ организовывать через свойства ? Идея заключается в том чтобы доступ к изменению данного поля осуществлялся с одного места для лучшего контроля и упрощённой отладки тех самых изменений.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.10.2020, 11:51
Лучший ответ Сообщение было отмечено serega721 как решение

Решение

Цитата Сообщение от serega721 Посмотреть сообщение
Какими правилами следует руководствоваться при назначении доступа private/public для полей?
private по умолчанию, public только тогда, когда на то есть очень веская причина — например, дремучий интероп с библиотеками, написанными на других языках, которым нужен непосредственный доступ к памяти поля, а не к его акцессору.
1
6 / 6 / 3
Регистрация: 04.10.2009
Сообщений: 202
04.10.2020, 12:14  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
private по умолчанию, public только тогда, когда на то есть очень веская причина — например, дремучий интероп с библиотеками, написанными на других языках, которым нужен непосредственный доступ к памяти поля, а не к его акцессору.
Спасибо за ответ! И чтобы закрыть тему, возник последний вопрос. Исходя из того что я понял в большинстве случаев для связи с полем извне, мы будем общаться с помощью свойств. Хороша ли практика использования внутри класса автосвойств, без явного создания поля ? По крайней мере до того момента пока нам не придётся внутри getter/setter(a) проводить манипуляции с конкретным полем.
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,214
04.10.2020, 12:25
Цитата Сообщение от serega721 Посмотреть сообщение
Хороша ли практика использования внутри класса автосвойств, без явного создания поля ?
Если оно будет видно - то так и делают
C#
1
public int Val { get; set; }
Если полностью скрыто, то смысла нет
C#
1
private int val;
Если доступно только для чтения, то тоже автосвойства
C#
1
public int Val { get; private set; }
Если есть какая то логика - то одними автосвойствами просто может не получится обойтись (сходу трудно привести хороший пример, так мини-образец)
C#
1
2
3
4
5
6
7
private int val;
 
public int Val
{
    get { val / 2 + 5; }
    set { val = value == 0 ? 1 : value; }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.10.2020, 12:25
Помогаю со студенческими работами здесь

Изменить модификаторы доступа public к полям класса на private
Был тут вот такой код: namespace ConsoleApplication3 { class Room { public double length; //длина ...

Какими компиляторами следует пользоваться при изучении C++?
Здравствуйте! Дайте пожалуйста совет, какой программой следует пользоваться при изучении C++, просто для написания кода (опираясь на курс...

Для чего нужны модификаторы protected, private, public
подскажите, кто в курсе, зачем вообще нужны эти модификаторы доступа? ведь, все их можно обойти... сейчас курю Страуструпа "Дизайн...

Какими методами для работы с файлами и каталогами следует пользоваться?
Недавно изучаю, C++. И в отличие от PHP, он наполнен большим количеством функций, для решения одной и той же задачи. Когда я ищу в...

Какими правилами регулируется присваивание целочисленной переменной массива Char?
Почему такой код компилируется? #include <stdio.h> int main() { int x = { 'a', 'b', 'c', 'd' }; printf("%d\n",...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru