|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Брать свойство изнутри или через геттер
Ребята, у меня такой вопрос забавный и незначимый, просто любопытно.
Имеем в классе свойство и простой геттер (без каких-либо преобразований) для него: У нас внутри этого класса есть метод, который использует в своих расчётах значение свойства _someVar. Как обычно принято обращаться за значением: this.someVar или _someVar?
__________________
Не сломано - не чини! |
|
|||||
__________________
местонахождение |
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
В зависимости от того, что именно требуется. Ведь если свойство и псевдо-свойство (симулируемое геттером) ничем не отличаются, зачем геттер?
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Разные отклонения могут возникнуть при наследовании, например у наследников геттер станет возвращать преобразованное значение (не в сантиметрах а в дюймах например). Заранее трудно предусмотреть))
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Да, но это не главное. Просто сеттер не относится к сути вопроса, поэтому я его не написал.
Цитата:
Прихожу к выводу, что не надо ничего пихать в геттер кроме непосредственно значения, за которым обращаются.
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Цитата:
Сори, затупил. Пишу на Haxe довольно давно, уже привык к вот такому: Добавлено через 5 минут Цитата:
На мой взгляд, в большинстве случаев геттер должен выполнять незначительные преобразования, связанные со спецификой кода
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe Последний раз редактировалось Wormhole; 09.08.2018 в 13:16. |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Цитата:
Наверное, зря я на формулировку "геттер" давил. В твоём комментарии как раз и показан паблик внутри класса, который собирает все модификаторы и выдаёт итоговое значение. Согласись, если изменить сигнатуру на public function get finalStrength() : Number, то получится то, о чём я спрашивал
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Перенёс все поля во внутренний класс Parameters, вместе с сеттерами и геттерами. В Character имеем: Но поле _intelligence в классе Character остаётся, в нём теперь будет храниться read-only значение интеллекта, но уже со всеми модификаторами. Забрать его можно геттером. При изменении интеллекта (любым методом класса Character) не избежим вот такой записи, т.к. нет другого способа установки нового значения: Сеттер в классе Parameters посылает событие об изменении значения (он его и так посылает, чтобы поймать и отразить изменения во Вью), это событие ловит класс Character (опять же он его и сейчас ловит). В приёмнике события ставим: _intelligence = _params.intelligence; // Вызываем методы, проверяющие статусы и экипировку на предмет модификаторов интеллекта // Их же вызываем при смене статусов или экипировки Что думаете?
__________________
Не сломано - не чини! |
Часовой пояс GMT +4, время: 02:39. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|