PDA

Просмотр полной версии : Использование геттеров внутри класса


fljot
01.03.2011, 15:44
Использовать геттер или непосредственно private/protected field? Есть у кого-то fail-story?

http://stackoverflow.com/questions/629029/using-getters-within-class-methods

Getter:
+: логика учтёт возможное переопределение геттера в сабклассах
-: нужно постоянно оптимизировать запросы с геттерам через локальные переменные

terbooter
02.03.2011, 01:05
Не совсем понял, в чем минус

fljot
02.03.2011, 01:13
В целях оптимизации производительности вместо нескольких обращений к геттеру рекомендуется сохранять ссылку на геттер(иными словам на результат функции геттера) в локальную переменную. Например
var g:Graphics = graphics;
g.beginFill(...)
g.draw....
...
g.endFill();

Psycho Tiger
02.03.2011, 01:20
Ну и что? А сделайте себе метод getGraphics():Graphics. То же самое. Геттер/сеттер - те же методы, просто в более удобной записи с конкретными ограничениями.

fljot
02.03.2011, 01:27
Ну и что? А сделайте себе метод getGraphics():Graphics. То же самое. Геттер/сеттер - те же методы, просто в более удобной записи с конкретными ограничениями.

Ты вопрос читал?)

Psycho Tiger
02.03.2011, 01:40
А. В энтерпрайз лучше пускать всё getter-setter. Расширяемо, возможно выставление брейкпоинтов при изменении, отрубка плохих значений и красивый значок при автокомплите :3

fljot
02.03.2011, 01:46
Нет, ты всё-таки невнимательно прочитал. Вопрос в том, использовать ли геттер внутри самого класса или обращаться к полю напрямую "при живом геттере".

iNils
02.03.2011, 01:55
использовать ли геттер внутри самого класса или обращаться к полю напрямую "при живом геттере"Зависит от задачи.

terbooter
02.03.2011, 08:59
Я не понял, что вы хотите получить в ответ =)
Вы же сами ответили на свой вопрос, указав плюсы и минусы.

etc
02.03.2011, 10:50
В пределах класса по полю, если геттер примитивен. Если он выполнен по схеме on-demand, то тогда только геттер, очевидно.

Psycho Tiger
02.03.2011, 13:47
Нет, ты всё-таки невнимательно прочитал. Вопрос в том, использовать ли геттер внутри самого класса или обращаться к полю напрямую "при живом геттере".
А, внутри класса))
По задаче. Иногда по полю, иногда по сеттеру — всё от твоих целей зависит.

terbooter
02.03.2011, 13:54
etc, on-demand это так:

function get getterName():Object{
if(!this.property){
this.property = new Property();
}
return this.property;
}
?

fljot
02.03.2011, 14:00
Так. можно ещё коротенько записать return (this.property ||= new Property());

Котяра
02.03.2011, 14:49
ну или что-то вроде
function get hero():Object{

return this.objectList["hero"];
}

etc
02.03.2011, 16:22
terbooter, именно.