2009-07-08 3 views

ответ

3

Частные переменные в Actioncript, как правило, имеют _ перед ними. Тогда у вас есть getter/seters без _, чтобы предоставить им доступ общественности.

1

В ActionScript 2.0 _variable означает, что это свойство было встроено для объекта. Однако я прекратил использование ActionScript до того, как вышло 3.0, поэтому, насколько я знаю, он мог бы измениться на 3.0.

2

Возможно, вы используете naming convention. С точки зрения языка нет особого значения.

+0

Я понял, что это соглашение об именах, которое я хотел знать, что это означало. – Anton

+0

@Anton Вот почему я включил ссылку, так что вы могли понять, почему соглашения об именах значительны. Однако, с точки зрения языка, это несущественно. – Joseph

2

Это правда, что в JavaScript люди использовали _ для обозначения «не трогайте это значение», поскольку контроль уровня доступа в JavaScript довольно сложный ... сделать переменную, действительно недоступную извне, - это боль в а ** ...

в ActionScript 2.0 и 1, нет абсолютно никаких правил ...: D ..., например, в классе MovieClip, в ActionScript 2.0, у вас есть такие свойства, как _x и _y. .. все же самое лучшее focusEnabled vs _focusrect, оба логические, одно определение, может ли клип быть сфокусированным, а другой ли он имеет желтый прямоугольник, когда сфокусирован ...

либо это действительно связано с какой-то вещи от вспышки игроков внутренностей, или это просто случайное ... обратите внимание, что _global, _root и _accProps и, кроме того, он появляется только на свойства TextField, MovieClip и Button ...

__ (два подчеркивания) обозначает магию в флэш-плеер ... __resolve вполне магический метод ... и __proto__ волшебное свойство, если вы ... но, это не очень согласованный везде ...

Теперь, когда дело доходит до ActionScript 3.0, весь API не использует никаких подчеркиваний. .. много людей, включая меня, выбрали для обозначения private, protected и internal переменных $ с и _ с ..., но это совершенно произвольно именованием, которые должны сделать код для чтения и предотвращения конфликтов имен ...

Greetz

back2dos

1

Простой - _ {Ваше имя переменной} означает, что это личное.

В AS3 можно определить методы получения и установки, как

public function get myVar():String 
{ 
    return _myVar; 
} 

это заканчивается быть прозрачным вне класса и показывая, как

myclass.myvar 

Таким образом, методы получения и установки в AS3 в основном похожи сбивающих с толку свойствами , Таким образом, вам нужно каким-то образом дифференцировать - так что вы начинаете с «_».

2

Можно было бы написать

class Hello{ 
    private var x:Number; 
    public function get x():Number{...} 
    public function set x(value:Number):void{...} 

    protected var y:Number; 
    public function get y():Number{...} 
    public function set y(value:Number):void{...} 
} 

Но каждый раз, когда у получить доступ к ним из класса или подкласса вам нужно будет указать, какой у среднего, потому что они имеют такое же имя (которое можно как они находятся в разных пространствах имен). Это будет выглядеть

var before:Number = private::x; 

или для использования сорбента:

var before:Number = public::x; 

для защищенных варов это было бы даже быть продолжено во всех подклассах ...

Людей, которые не любит подчеркивание можно использовать любой другой синтаксис, чтобы сделать имена уникальными, например первая буква для геттеров и сеттеров, как в C#.

0

Я предпочитаю префикс всех частных переменных с «_», даже без геттеров или сеттеров. Эта методология позволяет мне сразу знать, когда какая-либо функция манипулирует своими частными переменными, пока я просматриваю код. Это похоже на мелочь, но это может быть очень полезно.

Старайтесь не использовать защищенные переменные, если вы не знаете, что делаете. Они злы. Единственная причина, по которой вы когда-либо использовали, - разрешить подклассам доступ к переменным в суперклассе. Однако, если значение защищенной переменной было как-то очень важным для суперкласса, суперкласс никогда не узнает, изменил ли его подкласс. Лучше сделать его приватным и предоставить защищенный геттер и/или сеттер для подкласса, хотя это немного больше. Таким образом, суперкласс может реагировать на любые попытки изменить значение.

Смежные вопросы