Просмотр полной версии : Имя переменной и имя пакета
В проекте есть пакет с именем package_name.
Если в одном из классов проекта создать объект с именем package_name, то после компиляции он воспринимается, как пакет. При компиляции никаких ошибок нет, а во время выполнения, конечно, возникают ошибки. Например, при попытке вызвать метод someMethod для объекта package_name, программа пытается вызвать этот метод для пакета package_name и, разумеется, его не находит.
При этом, если я создам объект с именем, совпадающим с именем родного пакета actionscript (flash, например), то все в порядке.
Подскажите пожалуйста, как избежать такой ситуации?
Я использую для разработки FlashDevelop.
caseyryan
05.09.2013, 14:28
Избежать легко. Никогда не именовать переменные и пакеты одинаково.
Писать код в соответствии с конвенциями. В ас3 вообще не принято использовать андерскор _ в названиях чего-либо, кроме констант.
Спасибо. То есть так принято — не именовать переменные и пакеты одинаково? А можно ссылку на «конвенции»? Любопытно почитать. И на счет нотации с помощью символа подчеркивания тоже.
Я думаю, когда почитаю, для меня многое станет яснее, но пока я логики в таком ограничении не вижу. Если, к примеру, у меня пакет, посвященный сообщениям, называется messages, что логично, почему бы мне некий реестр сообщений не назвать messages? То же ведь логично — «говорящее» название, которое помогает понимать код. Ради чего мне отказываться от этого?
Но это вопрос логики и на него может быть несколько ответов. Мне интереснее техническая сторона — как я и писал, назвать переменную flash (что совпадает с именем пакета языка flash) я могу без проблем, а messages (что совпадает с именем моего пакета messages) не могу. Как так?
KumoKairo
05.09.2013, 14:45
caseyryan, а как же имена приватных и протектед полей? Часто встречал, что имя приватного или протектед поля начинается с андерскора, чтобы сделать геттер и сеттер с тем же названием, только без этого андерскора
romzes, классы принято называть с большой буквы, а пакеты использовать зачастую можно в очень ограниченном количестве, они используются скорее для предотвращения конфликтов с одинаковым названием классов, нежели для структуризации проекта. Это (структуризация) конечно хорошо, но по отдельному пакету на отдельный класс выделять точно не надо
Насчет "конвенции" - полный список (http://techwiki.openstructs.org/index.php/AS3_Coding_Standards) "требований" к стилистике кода на AS3
KumoKairo, О! За ссылку спасибо.
А структурировать проект просто приходится, когда количество классов растет.
caseyryan
05.09.2013, 20:09
caseyryan, а как же имена приватных и протектед полей? Часто встречал, что имя приватного или протектед поля начинается с андерскора, чтобы сделать геттер и сеттер с тем же названием, только без этого андерскора
Да, согласен, это я упустил. Потому что думал про стыки слов в названиях переменных и методов, по типу php.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.