Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Alvin Seville
332 / 265 / 131
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Принято ли в C++ делать поля публичными?

22.02.2019, 16:56. Показов 1283. Ответов 4
Метки нет (Все метки)

Принято ли в C++ делать поля публичными? Или требуется их всегда оборачивать в геттер и сеттер?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2019, 16:56
Ответы с готовыми решениями:

Принято ли делать WEB поректы сообща...
Принято ли делать WEB поректы сообща по интернету. И так что бы друг друга в глаза не видеть. ...

Как сейчас принято делать "версии для печати"?
Здравствуйте! Каким методом лучше реализовать версию страницы для печать? Спасибо!

Как сделать тестируемым класс с публичными методами void
Как сделать тестируемым такой класс? Краткое описание: публичный метод StartTimer создает...

Не понимаю как сделать через поля, вроде задачка простая но как делать через ПОЛЯ
Поле first – целое положительное число, числитель; поле second – целое положительное число,...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
4
14093 / 7562 / 1794
Регистрация: 30.01.2014
Сообщений: 12,656
22.02.2019, 17:09 2
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Принято ли в C++ делать поля публичными? Или требуется их всегда оборачивать в геттер и сеттер?
Вы не должны воспринимать наличие приватных полей и геттеров\сеттеров к ним как некий ритуал.

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

Так вот, приватные данные класса - это как раз те самые провода. А методы-интерфейсы - это замок зажигания, который обеспечивает защиту от неверных действий и контроль. Если вы будете принимать решение о сокрытии данных исходя из описанных выше причин, а не ритуальных догм (принято-не принято), то вопроса темы для вас не будет существовать. И это относится к любому языку, который поддерживает ООП.
6
Alvin Seville
332 / 265 / 131
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
22.02.2019, 17:14  [ТС] 3
DrOffset, привычка оборачивать всё в свойства в .NET языках даёт о себе знать.
0
14093 / 7562 / 1794
Регистрация: 30.01.2014
Сообщений: 12,656
22.02.2019, 17:21 4
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
привычка оборачивать всё в свойства в .NET языках даёт о себе знать.
Вы можете делать это и здесь. Но ваша мотивация должна быть не ритуальная, а осознанная: "я делаю это, чтобы защитить данные и повысить контроль за инвариантами", а не "я делаю это, потому что так принято".

Добавлено через 5 минут
Второй подход в любом случае менее гибкий. В ситуации "мне не нужно контролировать инвариант здесь, т.к. он контролируется на более высоком уровне абстракции" с сознанным подходом не будет проблем, а с ритуальным будет - вы будете вынуждены все равно закрыть данные, даже если это противоестественно конкретной ситуации.
Также неоднократно встречал людей с претензиями в сторону ООП, которые воспринимают его как ритуал, а не инструмент защиты: "ООП - фигня, там ты вынужден писать по 100500 методов на каждый чих".
4
Эксперт C
25573 / 15944 / 3414
Регистрация: 24.12.2010
Сообщений: 34,879
22.02.2019, 20:02 5
DrOffset, с удовольствием нажал на кнопочку. Красивая метафора. Грамотный подход.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2019, 20:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Почему не рекомендовано делать поля открытыми?
Только начал учить ООП. Зачем рекомендуется использовать мутатор и аксессор,а не просто сделать...

Не суммирует поля если хотя в одном пусто, что делать?
В таблице есть 12 полей: январь, февраль и т.д. В форме производится ввод данных в эту таблицу. ...

Что делать, чтобы можно было задавать период и данные из поля Регистратора отображались?
Здравствуйте уважаемые форумчане. Надеюсь на вашу помощь и ответы на интересующие меня вопросы. ...

VB 6 Что делать если имеется два текстовых поля с одним названием класса ? TLabeledEdit
Имеется два текстовых поля у обоих одинаковый класс название TLabeledEdit Когда я вписываю текст...

Принято 0
Подскажите настраиваю раздачу wi-fi как описано в интернете: netsh wlan set hostednetwork...

Что делать? как обойти роблему с размером поля 255 в access при выводе в word
проблема заключается вот в чем! имеется таблица в access с двумя полями. в каждом поле находятся...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.