Какова наилучшая практика / стандарт кодирования в отношении “этой” области - AS3?

StackOverflow https://stackoverflow.com/questions/619505

Вопрос

Какова наилучшая практика / стандарт кодирования в отношении "этой" области - AS3?Есть ли такой?Я чувствую, что это действительно помогает в стандартизации и мой читабельность, но иногда это кажется "чересчур".

Например, действительно ли необходимо использование "этого" в следующем (я знаю, что это работает без "этого")?:

private var _item:Object;

private var selectedItem:Object;

public function set item(value:Object):void
{
    this._item = value;

    if (this._item["label"] == "doodad")
        this.selectedItem = value;
}

public function set item(value:Object):void
{
    return this._item;
}
Это было полезно?

Решение

"это" не требуется, если только вы не хотите предотвратить конфликты именования между переменными локальной области видимости (например, параметрами метода) и переменными экземпляра.

В вашем примере вы уже используете символ подчеркивания для обозначения частной переменной, так что это дополнительная причина не использовать "это", поскольку вы действительно дважды повторяете одно и то же.

Другие советы

Это, конечно, не обязательно, но я согласен, что это может помочь с удобочитаемостью. Поскольку я больше работаю с более динамическими языками (например, Perl и Python), такие соглашения могут быть жизненно важны для быстрого определения, где переменные и функции находятся в области видимости / расположения. Если это соглашение работает для вас, я не думаю, что это плохо, само по себе.

Таким образом, я потратил часы на переформатирование кода, который содержал неудобные соглашения, которые мешали удобочитаемости.

Например: один человек, с которым я работал, написал все задания следующим образом:

var foo:String= "bar";

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

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

Если вы работаете в команде, придерживайтесь правил кодирования команды.

Но лично я нахожу явное использование «этого», когда оно не требуется для устранения неоднозначности, излишнего, что отрицательно влияет на читабельность в статически типизированном языке, таком как AS3 (динамические языки - другая история!).

У класса должна быть только одна ответственность, поэтому обычно в нем не должно быть слишком много свойств. Внутри метода вы обычно имеете дело с тремя типами переменных: временными локальными переменными, параметрами метода и свойствами. Методы не должны быть слишком длинными, поэтому должно быть легко обнаружить разницу между тремя типами - если он не определен локально и не был передан в качестве параметра, то это свойство. Если метод не умещается на вашем экране, значит, он слишком длинный!

Я использую только "это" когда необходимо устранить неоднозначность между свойством и параметром с тем же именем.

Я предпочитаю не использовать "это" слишком часто, но иногда делаю это в Eclipse, просто чтобы получить автозаполнение (вероятно, худшая причина для этого!)

Было бы более разумно, если бы ваш пример был:

public function set item(_item:Object):void
{
    this._item = _item;

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top