Я думал, что у AS3 теперь есть частные способности. Итак, почему я должен предикатировать частные переменные с помощью подчеркивания?AS3: должны ли частные переменные иметь _
private var _privVar:String;
Я думал, что у AS3 теперь есть частные способности. Итак, почему я должен предикатировать частные переменные с помощью подчеркивания?AS3: должны ли частные переменные иметь _
private var _privVar:String;
Вам не обязательно. Это то, что поощряет читаемость, но отнюдь не обязательно. Всецело личное предпочтение.
Я делаю это общим правилом в ActionScript 3, чтобы следовать стилю Adobe.
Не используйте символы подчеркивания для личных изменений, если вы не используете getter or setter. Например:
private var _foo:String;
public function get foo():String
{
return _foo;
}
public function set foo(value:String):void
{
_foo = value;
}
Этот пример геттер/сеттер немного бесполезно, так как вы могли бы просто сделать публичное свойство, которое делает то же самое. Используйте только геттер или сеттер, когда вам нужно что-то сделать специальный, когда вы приобретете или установите объект. Даже тогда обычно лучше всего создать публичный метод.
Также еще один пункт. Лично я не думаю, что это хорошая идея для сокращения имен переменных или методов. Поэтому вместо вызова моей переменной privVar, я бы назвал это privateVariable. Это особенно верно, если вы используете IDE с автозаполнением/предложением, таким как FlashBuilder (Flex Builder) или FlashDevelop.
Посмотрите на Adobe - coding conventions and best practices для получения дополнительной информации.
Если геттер и сеттер не делают ничего особенного, было бы быстрее просто сделать переменную открытой. Это никому не повредит. – LiraNuna
точно! Мой пример был просто очень простым, чтобы выразить свою точку зрения. Довольно редко вы использовали бы геттеры или сеттеры в AS3. Большую часть времени вы делаете публичную собственность или публичный метод. –
Довольно редко? Едва. Я думаю, это зависит от того, как вы кодируете, но я немного кодирую против интерфейсов, а getter/setter - единственный способ добиться этого. –
Использование подчеркивания - это просто конвенция. И я стараюсь избегать их, потому что это путается с моим intellisense. Я привык печатать obj.va
и нажав Ctrl-Space в Flex Builder, чтобы получить obj.variableName
- это не очень хорошо работает с _variableName
BTV, делает более ранние версии ActionScript требуют предварить «частные» имена переменных с подчеркивания ?
Это беспорядок, потому что кажется, что вы не поняли эту идею. Использование подчеркивания - это то, что вы хотите пометить переменную как «членную». Это означает, что это личное или защищенное. Поэтому вы не можете просто использовать его как obj.variable - это должна быть функция или геттер/сеттер, который, конечно же, не начинается с подчеркивания. –
Я думаю, что вы не должны сокращать переменные. это упрощает читаемость и автоматическое завершение. С другой стороны, в моей практике нехорошо использовать встроенные AS-приемники и сеттеры с синтаксисом function set someVar (value) : void
. Это сильно затормозит рефакторинг, потому что когда вы получаете много времени, просто не зная, что какая-то переменная является сеттером или геттером.
В том месте, где я работал, мы использовали соглашение о доступе к свойствам Java Beans, как function setSomeVar (value) : void
. Конечно, поскольку это сообщество не является обычным явлением в сообществе AS, такие IDE, как FlashDevelop, не поддерживают такое генерирование геттеров и сеттеров.
Вы нашли правильный ответ? –