Просмотр полной версии : Вредно ли создавать переменные с одинаковым именем
HardCoder
22.12.2011, 11:58
Здравствуйте. Интересует один вопрос. Пример1:private var _prop:Number;
public function set prop(prop:Number):void {
_prop = prop
}Пример2:private var prop:Number;
public function func(prop:Number):void {
this.prop = prop;
}Эти 2 примера работающие. И вот вопрос: могут ли такие конструкции навредить как-то? Если да то как, по какой причине? Будут ли такие конструкции тормозить выполнение кода (например компилятор будет немного дольше искать переменные, потому что у них одинаковые имена, или что-то типа того)?
На вопрос зачем это, отвечу что это чисто субьективное решение для удобства вызова методов.
И вот вопрос: могут ли такие конструкции навредить как-то?
Нет, не могут. После компиляции параметры функции приобретают вид param1, param2... а локальные переменные _loc_1, _loc_2 ...
так что по барабану как их назвать. Если самому так удобно, то ничего плохого в этом нет совершенно.
HardCoder
22.12.2011, 12:07
Спасибо. Я, в принципе так и думал. Но вот если взять пример 2. Сейчас он работает нормально. Но не бывает ли такого что компилятор один раз в 1000 раз "глюкнет" и воспримет this.prop = prop;//(prop - то что передали в параметры) как this.prop = this.prop?
Если первый пример скомпилится и верно сработает, то не вредно (там не очевидно, какой из prop присваивается, хотя вроде как сперва ищется в локальных, так что ок). Второй - точно ок.
Но вообще с одинаковыми именами поосторожнее, если только параметр имеет одинаковое с другими имя, то ещё терпимо, в других случаях скорее нет.
HardCoder
22.12.2011, 12:20
В первом примере все работает. Очевидно, что он ищет сначала локальные, потому что действительно переменной _prop присваивается значение, заданное в параметрах.
Но вообще с одинаковыми именами поосторожнее, если только параметр имеет одинаковое с другими имя, то ещё терпимо, в других случаях скорее нет.А можно хоть краткий пример, чтобы в будущем знать что можно, что нельзя делать?
Читать же неудобно, постоянно в голове держать что this.prop переменная класса, а prop - аргумент, а если параметров несколько и переменных куча да еще и с одинаковыми именами - вообще кранты.
Но не бывает ли такого что компилятор один раз в 1000 раз "глюкнет" и воспримет
Ни разу такого не наблюдал. Компилятор свое дело знает ;)
HardCoder
22.12.2011, 12:53
Читать же неудобно,
У меня привычка не зацикливаться на красоте написания несложных функций. Больше делаю акцент на удобочитаемость снипетов при при вызове этих функций. Вот, например, есть функция
public var direction:DirectionClass;
public functon setDirection(direction:DirectionClass,someArgs:*):void {
this.direction = direction;
this.someArgs = someArgs;
}При появлении снипета, я вижу, что моя функция что-то делает с моим "public var direction:DirectionClass;" а не скаким-то его синонимом. А вот какое впечатление создастся у программиста, вызывающего в коде метод setDirection(_someAbraCadabra:DirectionClass,someArgs:*)? Мне как-то не очень нравится.
постоянно в голове держать что this.prop переменная класса, а prop - аргументУ меня такого не может быть. Потому что есть собственные жесткие правила для написания локальных, публичных, статических и пр. переменных. А идентификатор this при обращении к переменным класса - для меня это святое
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.