c# - name - google java naming conventions



Convenção de nomenclatura-sublinhado em variáveis C++ e C# (12)

É apenas uma convenção que alguns programadores usam para deixar claro quando você está manipulando um membro da classe ou algum outro tipo de variável (parâmetros, local para a função, etc). Outra convenção que também é amplamente usada para variáveis ​​de membros é prefixar o nome com 'm_'.

De qualquer forma, estas são apenas convenções e você não encontrará uma fonte única para todas elas. Eles são uma questão de estilo e cada equipe de programação, projeto ou empresa tem seus próprios (ou até mesmo não tem nenhum).

É comum ver um nome de variável _var em um campo de classe. O que significa o sublinhado? Existe uma referência para todas essas convenções de nomenclatura especiais?


Answer #1

Agora, a notação usando "this" como neste.foobarbaz é aceitável para variáveis ​​de membros de classe C #. Substitui a antiga notação "m_" ou apenas "__". Isso torna o código mais legível porque não há dúvidas sobre o que está sendo referência.


Answer #2

Da minha experiência (certamente limitada), um sublinhado indicará que é uma variável de membro particular. Como Gollum disse, isso vai depender da equipe, no entanto.


Answer #3

Eu uso a nomenclatura _var para variáveis ​​de membro de minhas classes. Existem duas razões principais que eu faço:

1) Isso me ajuda a acompanhar variáveis ​​de classe e variáveis ​​de função locais quando estou lendo meu código mais tarde.

2) Isso ajuda no Intellisense (ou outro sistema de completação de código) quando estou procurando por uma variável de classe. Apenas conhecer o primeiro caractere é útil para filtrar a lista de variáveis ​​e métodos disponíveis.


Answer #4

Não há nenhuma convenção de nome único particular, mas eu vi isso para membros privados.


Answer #5

Na verdade, a convenção _var vem de VB não C # ou C ++ (m _, ... é outra coisa).

Isso veio para superar a insensibilidade a maiúsculas e minúsculas do VB ao declarar propriedades

por exemplo, tal código não é possível no VB porque considera user e User como o mesmo identificador

Private user As String

Public Property User As String
  Get
    Return user
  End Get
  Set(ByVal Value As String)
    user = value
  End Set
End Property

Então, para superar isso, alguns usaram uma convenção para adicionar '_' ao campo privado para vir assim

Private _user As String

Public Property User As String
  Get
    Return _user
  End Get
  Set(ByVal Value As String)
    _user = value
  End Set
End Property

Como muitas convenções são para .Net e para manter alguma uniformidade entre as convenções C # e VB.NET, elas estão usando a mesma.

Eu encontrei a referência para o que eu estava dizendo: http://10rem.net/articles/net-naming-conventions-and-programming-standards---best-practices

Caso de camelo com sublinhado líder. Em VB.NET, sempre indique "Protegido" ou "Privado", não use "Dim". O uso de "m_" é desencorajado, assim como o uso de um nome de variável que difere da propriedade apenas por maiúsculas e minúsculas, especialmente com variáveis ​​protegidas, pois isso viola a conformidade e tornará sua vida um problema se você programar em VB.NET, teria que nomear seus membros algo diferente das propriedades do acessador / mutador. De todos os itens aqui, o sublinhado principal é realmente o único controverso. Eu pessoalmente prefiro o caso de camuflagem sem sublinhado para minhas variáveis ​​privadas, para que eu não tenha que qualificar nomes de variáveis ​​com "isto". para distinguir de parâmetros em construtores ou em outro lugar onde eu provavelmente terei uma colisão de nomenclatura. Com a insensibilidade a maiúsculas e minúsculas do VB.NET, isso é ainda mais importante, pois as propriedades do acessador geralmente terão o mesmo nome que as variáveis ​​do membro privado, exceto o sublinhado. Tanto quanto m_ vai, é realmente apenas sobre estética. Eu (e muitos outros) acho m_ feio, pois parece que há um buraco no nome da variável. É quase ofensivo. Eu costumava usá-lo em VB6 o tempo todo, mas isso era apenas porque as variáveis ​​não podiam ter um sublinhado à esquerda. Eu não poderia estar mais feliz em ver isso ir embora. A Microsoft recomenda contra o m_ (e o straight _) mesmo que eles tenham ambos em seu código. Além disso, o prefixo com um "m" reto está correto. Naturalmente, uma vez que eles codificam principalmente em C #, eles podem ter membros privados que diferem apenas no caso das propriedades. O pessoal do VB tem que fazer outra coisa. Em vez de tentar criar casos especiais de idioma por idioma, recomendo o sublinhado principal para todos os idiomas que o suportarão. Se eu quiser que minha classe seja totalmente compatível com CLS, eu poderia deixar o prefixo em qualquer variável de membro protegida por C #. Na prática, no entanto, nunca me preocupo com isso, pois mantenho todas as variáveis ​​de membro potencialmente protegidas como particulares e forneco accessors e mutators protegidos. Por que: Em poucas palavras, essa convenção é simples (um caractere), fácil de ler (seu olho não se distrai com outros caracteres principais) e evita com êxito a nomeação de colisões com variáveis ​​de nível de procedimento e propriedades de nível de classe properties.class-level .


Answer #6

O padrão de nomenclatura da Microsoft para C # diz que variáveis ​​e parâmetros devem usar o formulário de caixa de camelo inferior IE: paramName . O padrão também exige que os campos sigam o mesmo formulário, mas isso pode levar a códigos pouco claros, portanto, muitas equipes exigem um prefixo de sublinhado para melhorar a clareza do IE: _fieldName .


Answer #7

O primeiro comentador (R Samuel Klatchko) referenciou: Quais são as regras sobre o uso de um sublinhado em um identificador de C ++? que responde a pergunta sobre o sublinhado em C ++. Em geral, você não deve usar um sublinhado à esquerda, pois ele é reservado para o implementador do seu compilador. O código que você está vendo com _var é provavelmente um código legado ou um código escrito por alguém que cresceu usando o antigo sistema de nomenclatura, que não desaprovava os principais sublinhados.

Como outras respostas afirmam, costumava ser usado em C ++ para identificar variáveis ​​de membros de classes. No entanto, não tem nenhum significado especial no que diz respeito a decoradores ou sintaxe. Então, se você quiser usá-lo, ele irá compilar.

Vou deixar a discussão C # para os outros.


Answer #8

Significa simplesmente que é um campo de membro na classe.


Answer #9

Uma convenção de nomenclatura como essa é útil quando você está lendo código, particularmente código que não é seu. Uma convenção de nomenclatura robusta ajuda a indicar onde um membro específico é definido, que tipo de membro é, etc. A maioria das equipes de desenvolvimento adota uma convenção de nomenclatura simples e simplesmente prefixa campos de membros com um sublinhado ( _fieldName ). No passado, usei a seguinte convenção de nomenclatura para C # (que é baseada nas convenções da Microsoft para o código do .NET framework, que pode ser visto com o Reflector):

Campo da Instância: m_fieldName
Campo estático: s_fieldName
Membro Público / Protegido / Interno: PascalCasedName ()
Membro Privado: camelCasedName ()

Isso ajuda as pessoas a entender a estrutura, o uso, a acessibilidade e a localização dos membros ao ler códigos desconhecidos muito rapidamente.


Answer #10

_var não tem significado e serve apenas ao propósito de tornar mais fácil distinguir que a variável é uma variável de membro privada.

Em C ++, usar a convenção _var é uma forma ruim, porque existem regras que governam o uso do sublinhado na frente de um identificador. _var é reservado como um identificador global, enquanto _Var (sublinhado + maiúscula) é reservado a qualquer momento. É por isso que, em C ++, você verá pessoas usando a convenção var_.


Answer #11

Existe uma razão totalmente legítima para usá-lo em C #: se o código também deve ser extensível a partir do VB.NET. (Caso contrário, eu não faria.)

Como o VB.NET não faz distinção entre maiúsculas e minúsculas, não existe uma maneira simples de acessar o membro do field protegido neste código:

public class CSharpClass
{
    protected int field;
    public int Field { get { return field; } }
}

Por exemplo, isso acessará o getter da propriedade, não o campo:

Public Class VBClass
    Inherits CSharpClass

    Function Test() As Integer
        Return Field
    End Function

End Class

Heck, eu não consigo nem escrever field em letras minúsculas - o VS 2010 continua corrigindo isso.

Para facilitar o acesso a classes derivadas no VB.NET, é necessário criar outra convenção de nomenclatura. Prefixar um sublinhado é provavelmente o menos intrusivo e mais "historicamente aceito" deles.





naming-conventions