ti-enxame.com

Como você nomeia suas variáveis ​​privadas em C #?

Qual é a melhor prática, convenções de nomenclatura mais comumente aceitas para variáveis ​​privadas em C #?

  1. private int myInteger;
  2. private int MyInteger;
  3. private int mMyInteger;
  4. private int _myInteger;
  5. private int _MyInteger;
  6. Outra opção misteriosa

Qual você usa e por quê? (Minha empresa é relativamente nova em C # e gostaria de escolher o método mais "aceito pelo setor" para tentar acessar nosso padrão de codificação.)

25
Vaccano

As diretrizes do design da classe MSDN http://msdn.Microsoft.com/en-us/library/ta31s3bc.aspx recomenda a opção 1 - myInteger.

Eu sempre usei esse estilo. Tenho uma antipatia pessoal pelo personagem _.

44
btlog

Eu uso a opção 4 acima:

private int _myInteger;

Eu gosto de ter alguma indicação de escopo em meus nomes de variáveis ​​e o sublinhado é suficiente para esse fim. Também é muito fácil de ler.

25
Matt Dillard

Eu uso o seguinte esquema de nomenclatura:

  • 1º (myInteger) para variáveis ​​com escopo local
  • 2º (MyInteger) para propriedades públicas
  • 4º (_myInteger) para variáveis ​​privadas
16
Zafer

Eu acho que a opção 4 é realmente a opção mais legível. Isso ajuda você a ter que fazer isso:

public Person(string name, int age) 
{
    this.name = name;
    this.age = age;
}

Também torna todos os membros privados mais visíveis. No exemplo a seguir, de onde diabos vem age? Sem o qualificador this, é mais difícil dizer.

private void Method()
{
    var x = 2;
    var y = age + x;
}

É muito mais fácil entender:

private void Method()
{
    var x = 2;
    var y = _age + x;
}
14
ChaosPandion

Primeiro, PascalCasing é geralmente reservado para propriedades públicas, consts, métodos, etc. da classe. Então eu pularia 2 e 5.

Segundo, a notação húngara é desencorajada no mundo .NET, então (uh, eu acho) 3 está certo. Supondo que é isso que está acontecendo com 3.

Isso sai com camelCasing e _camelCasing. Eu normalmente uso _camelCasing para variáveis ​​de classe e camelCasing antigo simples para variáveis ​​com escopo definido para um método ou mais restrito. O revestimento de camelo é o padrão aceito usado para argumentos de método, nomes de variáveis ​​protegidas/privadas e variáveis ​​dentro de um método ou escopo mais restrito.

Também gosto de acrescentar o sublinhado para que minhas variáveis ​​privadas sejam agrupadas no meu intelecto. No entanto, eu faço isso apenas para variáveis ​​com escopo definido para um tipo. Variáveis ​​declaradas em um método ou escopo mais restrito deixo o sublinhado desativado. Facilita mantê-los separados e manter as variáveis ​​menos usadas juntas.

10
Ripped Off

private int integer

Se você ficar confuso entre as variáveis ​​membro e local em um escopo de método, provavelmente precisará refatorar.

4
Ryan Roberts

Eu faço a opção 4 porque é assim que o SSCLI se parece, mas sinceramente não me importo muito em nomear variáveis ​​privadas. Público é uma história diferente.

BTW você esqueceu m_MyInteger

2
Conrad Frix

Eu não chamaria isso de "meu" nada!

Mas eu diria

class C
{
     int VariableName { get; set; }
}

muitas vezes isso é melhor do que ter variáveis ​​explícitas. Se eu tivesse uma variável privada explícita, eu a chamaria int _variableName;

2
CJBrew

Eu acredito que a melhor maneira de fazer isso (em C #/.net de qualquer maneira) é uma combinação de 2 e 6:

private int MyInteger { get; set; }

Teoricamente, não há nenhuma variável aqui, mas ela parece e age como uma variável de instância privada. Se precisarmos adicionar alguma lógica de negócios a esse valor (é um valor completamente interno, para que possamos fazer o que quisermos, afinal de contas), ele já estará 'propriedade' para nós. Uma xícara quente e fumegante de vitória!

2
Task

com o sublinhado.

Bill Wagner explica por que em C # efetivo . Mas eu nunca nomearia um número inteiro meu Inteiro , melhor algo como _age ou _length. Incluir o TypeName no nome da instância é uma prática horrível. Os nomes devem ser auto-explicativos e, como C # é seguro, os tipos podem ser encontrados att sempre.

1
Caspar Kleijne

Em C++, costumo usar _ como alterno muito entre editores, o que não me permite ver se é privado.

Para C #, costumo deixar o _ ausente, pois o Visual Studio me permite ver se é privado.

Eu costumo usar a maneira Camel Case para fazer isso.

1
Tamara Wijsman

Você precisa dar um exemplo mais específico, mas:

private int count, private int badFileCount, private static readonly int ReconnectAttemptsLimit

A propósito, você obtém tudo isso GRÁTIS quando instala e começa a usar os melhores e mais recentes MSFT Stylecop.

1
Job

Eu uso 4 (private int _myInteger;) Porque:

private int myInteger;

É assim que eu nomeio minhas variáveis ​​locais.

private int MyInteger;

É assim que eu nomeio constantes.

private int mMyInteger;

Este não é o estilo c #.

private int _MyInteger;

Isso parece estranho.

1
Victor Hurdugaci

Eu tenho o ReSharper nomeando minhas variáveis, não apenas as minhas, mas todo mundo faz isso também. Existe uma grande quantidade de consistência no projeto.

0
Sevki

Eu vou pela opção 5: private int _MyFoo

Não vejo nenhuma vantagem competitiva real sobre o _myFoo.

0
mafu

Padrão de codificação C # do IDesign de Juval Lowy é bastante popular. Este padrão recomenda prefixar variáveis ​​de membro privadas com "m_" (Opção 6). É o que fazemos em nossa equipe.

private int m_myInteger;

Opção 4 (_myInteger) é uma variação aceitável deste padrão.

Não gostei da recomendação do MSDN (myInteger), porque dificulta distinguir um membro privado de uma variável local. A recomendação deles, é claro, resolve esse problema qualificando membros privados com this, o que me parece redundante.

0
azheglov

Use camelCasing para variáveis ​​privadas como myInteger

Considere um _ Anterior se a variável for um backup de uma propriedade para reduzir confusões -
Variável _myProperty Para a propriedade MyProperty

0
Gulshan