Qual é a melhor / padrão de codificação prática no que diz respeito ao “presente” escopo é AS3?

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

Pergunta

Qual é a melhor / padrão de codificação prática no que diz respeito ao "presente" escopo é AS3? Existe um? Eu sinto que realmente ajuda com a padronização e minha legibilidade, mas às vezes parece que "muito".

Por exemplo, é o uso de "presente" na seguinte realmente necessário (eu sei que funciona sem "isto"):?

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;
}
Foi útil?

Solução

"isto" não é necessária a menos que você quer evitar conflitos de nomes entre variáveis ??de escopo local (params método, por exemplo) e variáveis ??de instância.

No seu exemplo você já está usando um sublinhado para marcar uma variável privada, por isso é uma razão extra para não usar "isto" já que você está realmente dizendo duas vezes a mesma coisa.

Outras dicas

Ela certamente não é necessário, mas eu concordo que pode ajudar com a legibilidade. Desde que eu trabalho mais em mais linguagens dinâmicas (por exemplo, Perl e Python), tais convenções podem ser vitais para determinar rapidamente onde as variáveis ??e funções são escopo / localizado. Se esta convenção funciona para você, eu não acho que é uma coisa ruim, per se.

Assim, disse, passei horas reformatar o código que continha convenções estranhas que impediram a legibilidade.

Por exemplo: uma pessoa com quem trabalhei escreveu todas as atribuições como esta:

var foo:String= "bar";

Este foi irritante (eu prefiro "=" para que eu possa ver claramente o operador), e eu passei muito tempo limpando milhares de linhas de código que eu tinha de manter. Sua convenção (que, embora nós discutimos sobre várias vezes, ele se recusou a comprometer a) tendia a impedir meu trabalho.

Esforce-se para a unidade w / outros que trabalham com você. Se eles precisam para apoiar o seu código e encontrar este agravante, ele provavelmente não vale a pena deixá-lo em. Se você não esperar que alguém para trabalhar diretamente com a fonte, utilize convenções que ajudam a entender o seu código e documento (em algum lugar) que eles significam.

Se você estiver trabalhando em uma equipe, vara com as convenções de codificação da equipe.

Mas, pessoalmente, acho uso explícito de "isto", quando não é necessária para a desambiguação, um exagero que afete negativamente a capacidade de leitura em uma linguagem de tipagem estática como AS3 (linguagens dinâmicas são outra história!).

A classe deve realmente só tem uma responsabilidade tão geralmente não deve haver muitas propriedades nele. Dentro de um método que geralmente lidar com três tipos de variáveis: variáveis ??locais temporários, parâmetros de métodos e propriedades. Métodos não deve ser muito longo, por isso deve ser fácil de detectar a diferença entre os três tipos - se não for definido localmente e não foi passado como um parâmetro, então é uma propriedade. Se todo o método não se encaixa em sua tela, então provavelmente é muito longo!

Eu só uso "isto" quando necessário para disambiguate entre uma propriedade e um parâmetro com o mesmo nome.

Eu não preferem usar "this" muito, mas às vezes fazer em Eclipse, apenas para obter autocompletar (provavelmente o pior razão para fazê-lo!)

faria mais sentido se o seu exemplo foi:

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

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top