Se você estiver usando getters e setters, como deverá nomear as variáveis ​​de membro privado?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Como uma espécie de acompanhamento esta pergunta sobre prefixos, concordo com a maioria das pessoas no tópico que os prefixos são ruins.Mas e se você estiver usando getters e setters?Então você precisa diferenciar o nome do getter acessível publicamente da variável armazenada de forma privada.Normalmente uso apenas um sublinhado, mas existe uma maneira melhor?

Foi útil?

Solução

Esta é uma questão completamente subjetiva. Não existe uma maneira "melhor".

Uma maneira é:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

Outro é:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

Nem é a resposta certa. Cada um tem vantagens e desvantagens de estilo. Escolha o que você mais gosta e aplique -o de forma consistente.

Outras dicas

Gosto de prefixar campos com um sublinhado, como outros mencionaram.

private int _x;

Eu acho que isso vai além da preferência pessoal direta (como David Arno disse neste tópico). Eu acho que há algumas razões objetivas reais para fazer isso:

  1. Isso significa que você evita ter que escrever "this.x = x" para atribuições (especialmente em setters e construtores).
  2. Distingue seus campos de suas variáveis/argumentos locais. É importante fazer isso: os campos são mais complicados de manusear do que os locais, pois o escopo deles é mais amplo / a vida útil é mais longa. Adicionar o personagem extra é um sinal de alerta mental para os codificadores.
  3. Em alguns IDEs, o sublinhado fará com que o recompense automaticamente os campos até o topo da lista de sugestões. Isso facilita ver todos os campos para a classe em um bloco. Por sua vez, isso pode ser útil; Nas grandes classes, talvez você não consiga ver os campos (geralmente definidos na parte superior da classe) na mesma tela do código em que você está trabalhando. Classificá -los para o topo fornece uma referência útil.

(Essas convenções são para Java, mas existem semelhantes para outros idiomas)

Essas coisas parecem pequenas, mas sua prevalência definitivamente facilita minha vida quando estou codificando.

Em java existe this.foo em python existe self.foo e outras linguagens possuem coisas parecidas, então não vejo necessidade de nomear algo de forma especial, quando já posso usar uma construção de linguagem.No mesmo contexto, bons IDEs e editores entendem as variáveis ​​de membro e dão a elas um destaque especial, para que você possa realmente vê-las sem usar nomes especiais.

Em uma linguagem sensível ao caso que acabei de usar:

private int myValue;

public int MyValue
{
    get { return myValue; }
}

Caso contrário, eu usaria um sublinhado

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property

Existem quase tantas maneiras diferentes de fazer isso quanto os programadores fazendo isso, mas algumas das maneiras mais populares incluem (para uma propriedade Foo):

  • mfoo
  • m_foo
  • _foo
  • foo

EU Curti escrevendo "this.x = x". Está muito claro para mim. Além disso, ao usar o Eclipse, você pode gerar automaticamente seus getters/setters dessa maneira.

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