Pergunta

Existe um benifit para usar:

private var _someProp:String;

public function set someProp(value:String):void
{
    _someProp = value;
}
public function get someProp():String
{
    return _someProp;
}

Ao contrário de apenas usar:

public var someProp:String;

Sei que usar o getter/setter pode ser útil quando você precisar processamento ou precisar ser notificado de quando a propriedade é alterada assim:

public function set someProp(value:String):void
{
    _someProp = value;
    _somePropChanged = true;
    doSomethingElse();
}

Mas se você não precisar disso, há algum motivo para usar o getter/setter apenas usando um VAR público?

Obrigado!!

Foi útil?

Solução

Dependendo do seu idioma, você prefere o getter/setter na frente, porque não pode apresentá -lo mais tarde (estou olhando para você, java) se o que você precisa.

Outras dicas

Isso realmente depende um pouco do idioma/estrutura/kit de ferramentas que você está usando -

No entanto, geralmente há benefícios ao usar getters e setters relacionados à versão e compatibilidade da API. Esse pode ser um motivo muito útil para usá -los, tudo por si só.

Isso realmente não pode ser respondido sem conhecer o idioma. Getters e setters custam mais na maioria dos idiomas, mas eles compram flexibilidade no futuro. Em alguns idiomas, você não pode alterar um público para um getter/setter sem alterar o código nos chamadores porque o uso de sintaxe altera. Mas isso não é um problema com C#, no qual eu escrevo principalmente.

Getters e Setters permitem fazer validação de parâmetros. Eles permitem atrasar a criação de objetos até a primeira referência. Eles têm muitas vantagens, e eu as uso sempre que preciso de uma dessas vantagens desde o início.

Mas eu uso getters e setters apenas quando preciso deles imediatamente, ou quando tenho certeza de que vou precisar da flexibilidade. Caso contrário, eu os vejo como inchaço.

Como nota lateral, você pode começar com um VAR público e, se necessário, convertê -lo em um getter / setter posteriormente no código. Dependendo do idioma que você está usando.

Se sua propriedade for totalmente burra e não tiver efeitos colaterais no resto da classe - então, por todos os meios, apenas a exponha como um campo público.

É apenas isso em muitos casos suas propriedades vai Tenha efeitos colaterais, então você precisa controlar como eles são definidos e acessados.

Como exemplo trivial, o que acontece se sua variável pública não estiver definida como algo no seu construtor? Você está bem com isso sendo devolvido como nulo? Ou você gostaria de definir essa variável para algo em vez de retornar nulo? Este é um exemplo simples em que um getter personalizado vale a pena.

Getters e Setters também oferecem mais controle sobre quais valores a variável pode ser definida.

bool setAge(int age){
   bol retVal = true;

   if(age <= 0)
       retVal = false;

   return retVal;
}

Sem o setter, o valor pode ser definido como zero e coisas ruins podem acontecer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top