LINUX.ORG.RU

Облегчает рефакторинг и сопровождения, ибо интерфейс не меняется.

Таки да, согласно идеологии скоростного быдлокодинга - ненужно.

wfrr ★★☆
()

А, вообще, за последние пару месяцев было уже два огромных тредосрача на эту тему :)

KRoN73 ★★★★★
()
Ответ на: комментарий от wfrr

Хех ну вот я только что накатал класс рыночной свечи, в которой аж 9 изменяемых параметров. И к ним было как-то влом писать 18+ сеттеров/геттеров. Когда я знаю точно как я ее буду использовать.

Впрочем. Если это добро потом наследовать..

elf
() автор топика

К стати, а в какой IDE геттеры сеттеры рефакторингом под С++ делаются? Разве что для жавы такое видел в NetBeans.

Сейчас в QtCreator'e сижу - там такого нема

elf
() автор топика
Ответ на: комментарий от wfrr

Облегчает рефакторинг и сопровождения, ибо интерфейс не меняется.

Таки да, согласно идеологии скоростного быдлокодинга - ненужно.

фу, белко, ну что ты как не тролль :)

PS неистово и яростно плюсую

shty ★★★★★
()
Ответ на: комментарий от elf

для жавы такое есть везде, и в эклипсе, и в идее, и в нетбинзе.

stave ★★★★★
()

Если это, скажем, C++ - не обязательно. При необходимости просто переносишь переменную в private, делаешь геттер и сеттер, после чего компилишь и смотришь, где отвалилось. Немного механической работы, но ничего сложного.

Если это, скажем, Python - обязательно. Переложить что-либо на компилятор хрен получится.

Miguel ★★★★★
()

man инкапсуляция

ты разделяешь интерфейс от реализации и если реализация меняется, то в коде который использует интерфейс ничего менять не надо

shty ★★★★★
()
Ответ на: комментарий от Miguel

>Если это, скажем, Python - обязательно. Переложить что-либо на компилятор хрен получится.

В таком динамическом языке, как питон, вообще-то как раз не обязательно.

Кроме того есть property, которые позволяют без особых извращений поменять аттрибут с таким-то названием на геттер/сеттер, не меняя основной код.

anonymous
()
Ответ на: комментарий от elf

К стати, а в какой IDE геттеры сеттеры рефакторингом под С++ делаются? Разве что для жавы такое видел в NetBeans.

Сейчас в QtCreator'e сижу - там такого нема

видел такое в visual studio и codegear rad studio (бывший borland), ни разу не кроссплатформенно

можно запилить вручную, но то не для слабых духом, хотя, если интересно, вот вариант реализации

shty ★★★★★
()
Ответ на: комментарий от Miguel

>Если это, скажем, C++ - не обязательно.

Я тут смотрю что вроде как тоже не обязательно. Таки у меня класс будет как та же структура - чтобы хранить себе некоторые данные да и все -_-

elf
() автор топика
Ответ на: комментарий от Miguel

> Если это, скажем, Python - обязательно. Переложить что-либо на компилятор хрен получится.

Теперь объясни, чем property не выход (для Питона)?

tailgunner ★★★★★
()
Ответ на: комментарий от Miguel

> Если это, скажем, Python - обязательно. Переложить что-либо на компилятор хрен получится.

Если это Python, то можно не париться. Когда понадобится нетривиальный сеттер, можно на месте параметра сделать property.

Kpoxman ★★
()
Ответ на: комментарий от elf

Полюсофилы плакали кололись, но продолжали извращать парадигмы проектирования под свой матерный язык программирования.

wfrr ★★☆
()

Не нужны, если хочешь сильнее инкапсулировать данные в объектах. «Наружу» выставляются только самые необходимые рычаги управления.

Делать поля публичными заместо геттеров/сеттеров тоже лучше избегать всеми фибрами, так как это ещё больше открывает доступ к неспецифицированному управлению объектом и, как следствие, — невообразимые глюки.

iZEN ★★★★★
()
Ответ на: комментарий от tailgunner

>> Если это, скажем, Python - обязательно. Переложить что-либо на компилятор хрен получится.

Теперь объясни, чем property не выход (для Питона)?

Однако синхронизация у нас с точностью до секунды =)

Kpoxman ★★
()
Ответ на: комментарий от tailgunner

Ув. хвостострел, если Вы ничего не смыслите в проектировании, т овам просто необходимо работать сись-одмином, и начать с проектирования чистки мышек и под мышек.

wfrr ★★☆
()
Ответ на: комментарий от tailgunner

> ты разделяешь интерфейс от реализации и если реализация меняется

Шаманские заклинания.

с чем то не согласен?

shty ★★★★★
()
Ответ на: комментарий от tailgunner

Теперь объясни, чем property не выход (для Питона)?

Согласен, забыл про проперти.

Miguel ★★★★★
()
Ответ на: комментарий от shty

>>> ты разделяешь интерфейс от реализации и если реализация меняется

Шаманские заклинания.

с чем то не согласен?

С тем, что расходы на «отделение интерфейса от реализации» никак вообще не учитываются.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

У Вас заболевание психики в виде избыточной оптимизации кода, Вам бы на ассемблере мышки чистить.

wfrr ★★☆
()
Ответ на: комментарий от tailgunner

С тем, что расходы на «отделение интерфейса от реализации» никак вообще не учитываются.

простите, но это туфта, используйте inline и никаких накладных расходов не будет

или Вы про что?

shty ★★★★★
()
Ответ на: комментарий от shty

>> С тем, что расходы на «отделение интерфейса от реализации» никак вообще не учитываются.

простите, но это туфта, используйте inline и никаких накладных расходов не будет

Самое веское оправдание [сг]еттеров - это сохранение ABI при переходе от поля к чему-то более сложному. А тут inline %)

или Вы про что?

Я про ненужное загромождение кода.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я про ненужное загромождение кода.

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

wfrr ★★☆
()

конечно нужны, это же основы ООП. читай классику, там все написано.

isden ★★★★★
()
Ответ на: комментарий от tailgunner

> простите, но может тогда всё писать вообще в main()?

Иногда - именно так.

ха-ха-ха :) ну разве что для «hello, world»

shty ★★★★★
()
Ответ на: комментарий от wfrr

> А ПВОВНВ?

Я изучаю реакцию говорящих скунсов на внешние раздражители.

Вы из того народца

Не пытайся думать или догадываться - у тебя просто нет нужных для этого органов.

tailgunner ★★★★★
()
Ответ на: комментарий от elf

> 9 изменяемых параметров. И к ним было как-то влом писать 18+ сеттеров/геттеров

а зачем на каждую переменную писать? можно их кучками же юзать. setDimensions(height,width,depth,weight); например.

isden ★★★★★
()
Ответ на: комментарий от shty

>>> простите, но может тогда всё писать вообще в main()?

Иногда - именно так.

ха-ха-ха :) ну разве что для «hello, world»

Да, именно так. А если ты делаешь сложный объект, но при этом у его полей есть геттеры и сеттеры - подумай, правильно ли ты его спроектировал.

P.S. блин, ну даже в Яве давно стало общим местом то, что массовое использование геттеров и сеттеров - это нарушение инкапсуляции и признак плохого проектирования (люди не могут спроектировать нормальный интерфейс для класса и лепят [сг]еттер - типа «ну если реализация изменится, это нас спасет').

tailgunner ★★★★★
()
Ответ на: комментарий от isden

>а зачем на каждую переменную писать? можно их кучками же юзать. setDimensions(height,width,depth,weight); например.

Можно и так, но так слишком длинные да неповоротливые строки выходят.

Да и к тому же у меня парсится csv с этими данными, где они содержатся в строках. и чтобы не плодить еще кучу переменных, сразу при распарсевании заношу в setHeight(), setWith и т.д.

elf
() автор топика
Ответ на: комментарий от elf

> Да и к тому же у меня парсится csv с этими данными

ну сделай метод в объекте для всасывания либо всего CSV либо одной строки. т.е. у объекта есть метод, в который передается либо одна строка для заполнения свойств (это может быть и конструктор кстати) либо весь CSV файл.

isden ★★★★★
()
Ответ на: комментарий от tailgunner

Я изучаю реакцию говорящих скунсов на внешние раздражители.

Перевод: я играю в доктора, но в роли поциента.

нужных для этого органов.

Вы думаете сиськаме, убогие.

wfrr ★★☆
()
Ответ на: комментарий от tailgunner

> P.S. блин, ну даже в Яве давно стало общим местом то, что массовое использование геттеров и сеттеров - это нарушение инкапсуляции и признак плохого проектирования (люди не могут спроектировать нормальный интерфейс для класса и лепят [сг]еттер - типа «ну если реализация изменится, это нас спасет').

массово, т.е. на каждое свойство объекта, оно и не нужно. но оно часто незаменимо.

isden ★★★★★
()
Ответ на: комментарий от tailgunner

Вы уже почистили мышку, а под ней? А то вижу Вы склонны всем советовать как надо с точки зрения быдлокодера.

wfrr ★★☆
()
Ответ на: комментарий от tailgunner

даже в Яве давно стало общим местом то, что массовое использование геттеров и сеттеров - это нарушение инкапсуляции и признак плохого проектирования

а таки Вы в этом смысле :) ну да, нефиг ко всем подряд данным класса лазать

shty ★★★★★
()
Ответ на: комментарий от isden

массово, т.е. на каждое свойство объекта, оно и не нужно

Оно нужно только тогда, когда установка значения поля сопровождается действием - валидацией значения, установкой других полей или еще чем-то.

но оно часто незаменимо.

Ну объясни мне, что незаменимого в методах вроде:

int getField() { return _field; }

void setField(int v) { _field = v; }
tailgunner ★★★★★
()
Ответ на: комментарий от shty

>> даже в Яве давно стало общим местом то, что массовое использование геттеров и сеттеров - это нарушение инкапсуляции и признак плохого проектирования

а таки Вы в этом смысле :)

Нет, я еще и в смысле «Hello, world!\n» - нефиг каждой структуре лепить [сг]еттеры.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.