Russian Qt Forum
Ноябрь 23, 2024, 05:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Разное
>
Говорилка
>
C++ property
Страниц: [
1
]
2
3
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: C++ property (Прочитано 27183 раз)
AzazelloAV
Гость
C++ property
«
:
Апрель 17, 2015, 20:20 »
Мы привыкли как дурачки писать mData (m_data), потом инлайнить доступ к ним. Да зачем? Лишь потому, что прочитали в *надцатом году (а все остальные переписали это), что данные должные быть скрыты . Понятно, есть преимущества сокрытия, если захотим добавить проверку, не надо в коде ничего менять. Оставим также попытку сделать проперти частью плюсов, без гет/сет многие покончат жизнь самоубийством.
О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.
Т.е. им по барабану, не нужны нам мантры, идём вперёд и делаем правильно.
Ещё одна общеизвестная и общепринятая мантра - заблуждение: inline функции увеличивают код. Это уже просто какие то шаблоны в головах у нас сидят. Вот написал это один дурак, а все остальные повторяют, ну не ужас.
Для горячих голов - это говорилка, ни о чём, нехочу мир менять, не хочу кому что либо доказать, не хочу пену у кого либо у рта.
Записан
Bepec
Гость
Re: C++ property
«
Ответ #1 :
Апрель 17, 2015, 20:26 »
Хм, интересный поток сознания, раньше такого не встречал) И давно это у вас началось?
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #2 :
Апрель 17, 2015, 20:29 »
Цитата: Bepec от Апрель 17, 2015, 20:26
Хм, интересный поток сознания, раньше такого не встречал) И давно это у вас началось?
Мы же уже в Вами общались по этому поводу. Вашим ответом на это сообщение вы становитесь участником этого фееричного (подберите нужные слова себе) потока сознания, в котором не хотите участвовать (налицо противоречие). Если есть замечания конкретные (и короткие), то добро пожаловать.
А вообще прикольно конечно. Хех. Подойду к вам с другой стороны (не с зада) - 6 тысяч сообщений, тут тоже стоит задуматься.......
«
Последнее редактирование: Апрель 17, 2015, 20:34 от AzazelloAV
»
Записан
PimenS
Крякер
Offline
Сообщений: 371
Re: C++ property
«
Ответ #3 :
Апрель 17, 2015, 21:21 »
Цитата: AzazelloAV от Апрель 17, 2015, 20:20
Мы привыкли как дурачки писать mData (m_data), потом инлайнить доступ к ним.
Не надо говорить за всех.
Записан
Bepec
Гость
Re: C++ property
«
Ответ #4 :
Апрель 17, 2015, 21:26 »
Ну, я этим числом не горжусь, оно само как-то накопилось.
А вот различать в 40 параметрах приватные и публичные члены очень даже помогает при отладке
Сеттеры и геттеры легче отлаживать, чем обращение к публичному члену - 1 брекпоинт вместо поиска всех обращений.
Можно делать так, можно делать эдак - меняется только тип затрат. Или на написание геттеров или на дебажинг прямых обращений
PS мантру про inline увеличивают код не слышал. А разве нет?
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #5 :
Апрель 17, 2015, 21:50 »
Цитировать
А вот различать в 40 параметрах приватные и публичные члены очень даже помогает при отладке
Согласен, визуальная составляющая здесь играет далеко немаловажную роль.
Цитировать
Сеттеры и геттеры легче отлаживать, чем обращение к публичному члену - 1 брекпоинт вместо поиска всех обращений.
Ну тут тоже возразить нечего.
Цитировать
PS мантру про inline увеличивают код не слышал. А разве нет?
Тогда проигнорируем это.
Вы ответили в контексте практики, и тут я с вами ЗА. Но сокрытие переменных - это идеология.
Также замечу, что переменные должны быть (по идеологии) в приват. Протектед не приветствуется. Ну и как тут психоз не получить? Т.е. если я метод в протектед засунул (повышение области видимости просто) - это допустимо, а переменная - это "недопустимо". Понятно. Мы все ходим кругами при написании кода и плюём на все правила, когда "устали". Мы так часто плюём на правила, что хотим стремиться к идеалу, к тем устоям программирования. Так по пути следования к ним (к этим долбанным устоям), занимаясь всяким очередным рефакторингом у нас возникает сомнения - блин, ну тоска какая-то.
«
Последнее редактирование: Апрель 17, 2015, 22:18 от AzazelloAV
»
Записан
Bepec
Гость
Re: C++ property
«
Ответ #6 :
Апрель 17, 2015, 22:12 »
Не вижу ничего плохого в этой идеологии. Есть плюсы, есть минусы.
Но само распространение этой идеологии - лишь большой пребольшой плюс, который обощает кучу кода
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #7 :
Апрель 17, 2015, 22:25 »
Цитата: Bepec от Апрель 17, 2015, 22:12
Не вижу ничего плохого в этой идеологии. Есть плюсы, есть минусы.
Но само распространение этой идеологии - лишь большой пребольшой плюс, который обощает кучу кода
А я вижу. Есть состояние объекта (его переменные), есть перевод состояние объекта в другое стабильное состояние (его методы).
В плюсах нету разделение между переменными и методами (в плане языка, мы то знаем, где что).
Я конечно про другое начинал, но всё таки проперти стоило бы в язык ввести.
«
Последнее редактирование: Апрель 17, 2015, 22:40 от AzazelloAV
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: C++ property
«
Ответ #8 :
Апрель 18, 2015, 00:55 »
Цитировать
В плюсах нету разделение между переменными и методами
Вот это поворот)
Цитировать
Я конечно про другое начинал, но всё таки проперти стоило бы в язык ввести.
Озвучьте, пожалуйста, аргументы (обоснованные) в пользу введения в плюсы этих проперти.
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
alex312
Хакер
Offline
Сообщений: 606
Re: C++ property
«
Ответ #9 :
Апрель 18, 2015, 04:56 »
Цитата: AzazelloAV от Апрель 17, 2015, 20:20
О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.
Ты давно в исходники Qt заглядывал ?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: C++ property
«
Ответ #10 :
Апрель 18, 2015, 09:16 »
Цитата: AzazelloAV от Апрель 17, 2015, 20:20
Мы привыкли как дурачки ...
Так устроен мозг, это нормально - и без "дурачков" пожалуйста. Когда человек с чем-то знакомится впервые - он должен что-то запомнить, тупо, на веру. По-другому не выходит, для какого-то осмысления/анализа нет еще ни знаний, ни опыта. Эти первые запомненные вещи - очень яркие воспоминания, поэтому человек обычно следует им даже когда опыта достаточно. Да, иногда это противоречит здравому смыслу - напр маниакальные геттеры/сеттеры, но что поделаешь - инерция. Но в общем и целом ничего плохого нет, не видел ни одного хоть сколько-нибудь убедительного примера который побудил бы меня "отказаться от мертвых догм"
Можно упираться сколько угодно типа "вот говорят goto плохо, а я БУДУ его писать, БУДУ!!!" - но дальше "попытки пооригинальничать" дело-то не идет
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #11 :
Апрель 18, 2015, 09:22 »
В плюсах нету разделение между переменными и методами
Цитировать
Вот это поворот)
Цитировать
Озвучьте, пожалуйста, аргументы (обоснованные) в пользу введения в плюсы этих проперти.
Почему поворот. Есть устойчивое словосочетание - гетеры/сетеры. Значит уже есть разделение на методы гетеры/сетеры и все остальные. В С++ вызов метода гет не отличается от вызова другого метода. Один из положительных мометов ввода проперти мы отделяем методы работы со всем классом с методом работы с конкретной переменной класса (пусть даже она вычисляется налету). В каждом классе есть такие явные методы, которые мы определяем просто бросив взгляд на класс: isActive, isOpen, get/set Color. Предполагается, что они работаю только с одной переменной класса (в действительности это может быть не так, но вы же смотрим не на реализацию, а на интерфейс класса.
Если сложно выразился, то для меня в чем + - мы скрываем переменные, а выглядят они как открытые. Это первый момент.
Второй момент читаемость кода. Какая читаемость скажете вы? Все уже 100 лет пишут и читают нормально. Тогда приведу пример с перегрузкой операторов. Любую перегрузку можно заменить каким либо методом, но блин, читаемость как ухудьшится!
Записан
Bepec
Гость
Re: C++ property
«
Ответ #12 :
Апрель 18, 2015, 09:27 »
Не вижу причин ввода какой то третьей сущности.
Язык даёт нам методы и переменные. Каким манером вы проперти реализуете?
Отдельные геттеры сеттеры ?
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #13 :
Апрель 18, 2015, 09:30 »
Цитата: alex312 от Апрель 18, 2015, 04:56
Цитата: AzazelloAV от Апрель 17, 2015, 20:20
О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.
Ты давно в исходники Qt заглядывал ?
Вчера, а вы?
Не встречали в коде Qt this->var = var?
Вот пример
class QRect {
private:
int x1;
int y1;
int x2;
int y2;
}
Записан
AzazelloAV
Гость
Re: C++ property
«
Ответ #14 :
Апрель 18, 2015, 09:34 »
Цитата: Bepec от Апрель 18, 2015, 09:27
Не вижу причин ввода какой то третьей сущности.
Язык даёт нам методы и переменные. Каким манером вы проперти реализуете?
Отдельные геттеры сеттеры ?
Начнем с того, что пропети в Qt реализованы, и каким либо макаром их реализовывать уже не нужно (я про Qt, т.е. действительно гет/сет). Но!, я бы добавил в язык возможность проперти без методов гет/сет, т.е. доступ нарямую. Когда надо, добавим в проерти эти методы гет/Сет. И не забывайте, что даже если только через гет/сет, эти самые гет/Сет ушли бы из видимости. Это что-то вроде перегрузки операторов, только я не знаю какое название подобрать. Пусть будет "оператор присваивания переменной класса". И в методе гет отпадёт нужность в 90% случаях.
«
Последнее редактирование: Апрель 18, 2015, 09:47 от AzazelloAV
»
Записан
Страниц: [
1
]
2
3
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...