Russian Qt Forum
Ноябрь 23, 2024, 05:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: C++ property  (Прочитано 27187 раз)
AzazelloAV
Гость
« : Апрель 17, 2015, 20:20 »

Мы привыкли как дурачки писать mData (m_data), потом инлайнить доступ к ним. Да зачем? Лишь потому, что прочитали в *надцатом году (а все остальные переписали это), что данные должные быть скрыты . Понятно, есть преимущества сокрытия, если захотим добавить проверку, не надо в коде ничего менять. Оставим также попытку сделать проперти частью плюсов, без гет/сет многие покончат жизнь самоубийством.

О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.

Т.е. им по барабану, не нужны нам мантры, идём вперёд и делаем правильно.

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

Для горячих голов - это говорилка, ни о чём, нехочу мир менять, не хочу кому что либо доказать, не хочу пену у кого либо у рта.
Записан
Bepec
Гость
« Ответ #1 : Апрель 17, 2015, 20:26 »

Хм, интересный поток сознания, раньше такого не встречал) И давно это у вас началось?
Записан
AzazelloAV
Гость
« Ответ #2 : Апрель 17, 2015, 20:29 »

Хм, интересный поток сознания, раньше такого не встречал) И давно это у вас началось?

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

А вообще прикольно конечно. Хех. Подойду к вам с другой стороны (не с зада) - 6 тысяч сообщений, тут тоже стоит задуматься.......
« Последнее редактирование: Апрель 17, 2015, 20:34 от AzazelloAV » Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #3 : Апрель 17, 2015, 21:21 »

Мы привыкли как дурачки писать mData (m_data), потом инлайнить доступ к ним.

Не надо говорить за всех.  Подмигивающий
Записан
Bepec
Гость
« Ответ #4 : Апрель 17, 2015, 21:26 »

Ну, я этим числом не горжусь, оно само как-то накопилось.

А вот различать в 40 параметрах приватные и публичные члены очень даже помогает при отладке Улыбающийся

Сеттеры и геттеры легче отлаживать, чем обращение к публичному члену - 1 брекпоинт вместо поиска всех обращений.

Можно делать так, можно делать эдак - меняется только тип затрат. Или на написание геттеров или на дебажинг прямых обращений Улыбающийся

PS мантру про inline увеличивают код не слышал. А разве нет?
Записан
AzazelloAV
Гость
« Ответ #5 : Апрель 17, 2015, 21:50 »

Цитировать
А вот различать в 40 параметрах приватные и публичные члены очень даже помогает при отладке Улыбающийся
Согласен, визуальная составляющая здесь играет далеко немаловажную роль.

Цитировать
Сеттеры и геттеры легче отлаживать, чем обращение к публичному члену - 1 брекпоинт вместо поиска всех обращений.
Ну тут тоже возразить нечего.

Цитировать
PS мантру про inline увеличивают код не слышал. А разве нет?
Тогда проигнорируем это.

Вы ответили в контексте практики, и тут я с вами ЗА. Но сокрытие переменных - это идеология.

Также замечу, что переменные должны быть  (по идеологии) в приват. Протектед не приветствуется. Ну и как тут психоз не получить? Т.е. если я метод в протектед засунул (повышение области видимости просто) - это допустимо, а переменная - это "недопустимо". Понятно. Мы все ходим кругами при написании кода и плюём на все правила, когда "устали". Мы так часто плюём на правила, что хотим стремиться к идеалу, к тем устоям программирования. Так по пути следования к ним (к этим долбанным устоям), занимаясь всяким очередным рефакторингом у нас возникает сомнения -  блин, ну тоска какая-то.
« Последнее редактирование: Апрель 17, 2015, 22:18 от AzazelloAV » Записан
Bepec
Гость
« Ответ #6 : Апрель 17, 2015, 22:12 »

Не вижу ничего плохого в этой идеологии. Есть плюсы, есть минусы.

Но само распространение этой идеологии - лишь большой пребольшой плюс, который обощает кучу кода Улыбающийся
Записан
AzazelloAV
Гость
« Ответ #7 : Апрель 17, 2015, 22:25 »

Не вижу ничего плохого в этой идеологии. Есть плюсы, есть минусы.

Но само распространение этой идеологии - лишь большой пребольшой плюс, который обощает кучу кода Улыбающийся

А я вижу. Есть состояние объекта (его переменные), есть перевод состояние объекта в другое стабильное состояние (его методы).
В плюсах нету разделение между переменными и методами (в плане языка, мы то знаем, где что).

Я конечно про другое начинал, но всё таки проперти стоило бы в язык ввести.
« Последнее редактирование: Апрель 17, 2015, 22:40 от AzazelloAV » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #8 : Апрель 18, 2015, 00:55 »

Цитировать
В плюсах нету разделение между переменными и методами
Вот это поворот)

Цитировать
Я конечно про другое начинал, но всё таки проперти стоило бы в язык ввести.
Озвучьте, пожалуйста, аргументы (обоснованные) в пользу введения в плюсы этих проперти.   
 

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #9 : Апрель 18, 2015, 04:56 »

О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.
Ты давно в исходники Qt заглядывал ?  Шокированный
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Апрель 18, 2015, 09:16 »

Мы привыкли как дурачки ...
Так устроен мозг, это нормально - и без "дурачков" пожалуйста. Когда человек с чем-то знакомится впервые - он должен что-то запомнить, тупо, на веру. По-другому не выходит, для какого-то осмысления/анализа нет еще ни  знаний, ни опыта. Эти первые запомненные вещи - очень яркие воспоминания, поэтому человек обычно следует им даже когда опыта достаточно. Да, иногда это противоречит здравому смыслу - напр маниакальные геттеры/сеттеры, но что поделаешь - инерция. Но в общем и целом ничего плохого нет, не видел ни одного хоть сколько-нибудь убедительного примера который побудил бы меня "отказаться от мертвых догм" Улыбающийся Можно упираться сколько угодно типа "вот говорят goto плохо, а я БУДУ его писать, БУДУ!!!" - но дальше "попытки пооригинальничать" дело-то не идет
Записан
AzazelloAV
Гость
« Ответ #11 : Апрель 18, 2015, 09:22 »

В плюсах нету разделение между переменными и методами
Цитировать
Вот это поворот)


Цитировать
Озвучьте, пожалуйста, аргументы (обоснованные) в пользу введения в плюсы этих проперти.    

Почему поворот. Есть устойчивое словосочетание - гетеры/сетеры. Значит уже есть разделение на методы гетеры/сетеры и все остальные. В С++ вызов метода гет не отличается от вызова другого метода. Один из положительных мометов ввода проперти мы отделяем методы работы со всем классом с методом работы с конкретной переменной класса (пусть даже она  вычисляется налету). В каждом классе есть такие явные методы, которые мы определяем просто бросив взгляд на класс: isActive, isOpen, get/set Color. Предполагается, что они работаю только с одной переменной класса (в действительности это может быть не так, но вы же смотрим не на реализацию, а на интерфейс класса.

Если сложно выразился, то для меня в чем + - мы скрываем переменные, а выглядят они как открытые. Это первый момент.
Второй момент читаемость кода. Какая читаемость скажете вы? Все уже 100 лет пишут и читают нормально. Тогда приведу пример с перегрузкой операторов. Любую перегрузку можно заменить каким либо методом, но блин, читаемость как ухудьшится!
Записан
Bepec
Гость
« Ответ #12 : Апрель 18, 2015, 09:27 »

Не вижу причин ввода какой то третьей сущности.
Язык даёт нам методы и переменные. Каким манером вы проперти реализуете? Улыбающийся
Отдельные геттеры сеттеры ? Показает язык
Записан
AzazelloAV
Гость
« Ответ #13 : Апрель 18, 2015, 09:30 »

О чём рассуждения - о том, что Qt даёт имена переменных класса без всяких префиксов и не страдают от этого.
Ты давно в исходники Qt заглядывал ?  Шокированный

Вчера, а вы?
Не встречали в коде Qt this->var = var?

Вот пример
class QRect {
private:
    int x1;
    int y1;
    int x2;
    int y2;

}
Записан
AzazelloAV
Гость
« Ответ #14 : Апрель 18, 2015, 09:34 »

Не вижу причин ввода какой то третьей сущности.
Язык даёт нам методы и переменные. Каким манером вы проперти реализуете? Улыбающийся
Отдельные геттеры сеттеры ? Показает язык

Начнем с того, что пропети  в Qt реализованы, и каким либо макаром их реализовывать уже не нужно (я про Qt, т.е. действительно гет/сет). Но!, я бы добавил в язык возможность проперти без методов гет/сет, т.е. доступ нарямую. Когда надо, добавим в проерти эти методы гет/Сет. И не забывайте, что даже если только через гет/сет, эти самые гет/Сет ушли бы из видимости. Это что-то вроде перегрузки операторов, только я не знаю какое название подобрать. Пусть будет "оператор присваивания переменной класса". И в методе гет отпадёт нужность в 90% случаях.
« Последнее редактирование: Апрель 18, 2015, 09:47 от AzazelloAV » Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.