Convenções de nomenclatura para variáveis [closed]

4

Ao programar, que convenções de nomenclatura você usa para suas variáveis? Não quero dizer quando o nome da variável deveria ser óbvio; ie. soma, total, primeiro, último. Mas quando você nomeia variáveis que não se encaixam em uma categoria / estrutura óbvia, que tipo de nomes você usa? É, myVar1 ou test1 ou variable1, etc ...?

    
por benhowdle89 04.01.2011 / 10:13
fonte

6 respostas

21

Sempre deve haver um propósito para uma variável, caso contrário, você pode deixar de fora e você não precisa de um nome. Portanto, use seu nome para identificar a finalidade de uma variável.

por exemplo. Às vezes, introduzo variáveis com o único propósito de manter um valor que precisa ser retornado. Eu posso chamar essa variável returnValue por exemplo. às vezes é temporário para uma variável diferente, eu poderia usar tempUserName

espero que isso ajude.

    
por 04.01.2011 / 10:27
fonte
12

Para mim, estas são as regras básicas em que qualquer convenção deve se basear:

  1. Qualquer convenção escolhida deve facilitar a leitura do código.
    Cada linha de código é escrita uma vez, mas lê dezenas, centenas ou milhares de vezes. Então, o tempo que leva para escrever uma linha de código é irrelevante, o importante é quanto tempo leva para ler e entender uma linha de código. Qualquer convenção deve ter isso em mente.
  2. Seja consistente.
    A única coisa pior do que uma mistura de convenções não é nenhuma convenção, e quanto mais convenções são misturadas, mais as primeiras se aproximam das últimas.
  3. Não invente sua própria convenção .
    Normalmente, você está programando como parte de uma equipe, adicionando código a algum projeto que já existe há algum tempo. Atenha-se às convenções da equipe ou do projeto.
    Se você está fazendo um projeto sozinho, use uma convenção que seja popular entre seus colegas de trabalho ou comum nos projetos da sua empresa. Normalmente, outros se juntarão mais tarde ou assumirão a manutenção depois que você sair. Faça com que se sintam em casa.
    Se você está sozinho e não tem uma equipe ou projetos para considerar (qual a probabilidade disso, a menos que você esteja fazendo coisas sozinho e por diversão?), Escolha uma convenção existente. Prefira aqueles que são comuns em qualquer campo que você trabalhe.

A seguir, algumas convenções específicas que considero importantes. Se eu tivesse que me juntar a uma equipe ou projeto onde as convenções já resolvidas explicitamente violassem qualquer uma dessas, eu comecei a me rebelar e fazer uma confusão sobre isso.

  1. Variáveis representam objetos no mundo real, então eles devem ser nomeados com um substantivo .
  2. Tipos representam categorias de objetos no mundo real, então eles também devem ser nomeados com um substantivo .
  3. Funções e métodos representam ações no mundo real, então elas devem ser nomeadas com um > verbo .
  4. Os booleanos devem ter um "é", "tem", "deve ser" ou algo parecido em seus nomes. Isto é verdade para ambas as variáveis booleanas e funções / métodos retornando booleanos.
  5. Não codifique os tipos nos nomes. Ao longo de uma década de adição de recursos e correção de bugs, os tipos geralmente mudam. É desajeitado, propenso a erros e muitas vezes impossível alterar os nomes das variáveis de acordo.
  6. Evite abreviaturas, exceto onde elas são realmente óbvias e muito comuns. (Sim, eu sei que este é um pouco confuso. Ainda assim, tinha que ser dito.)

Se você usa PascalCase , camelCase ou fake_space_style , se os identificadores devem começar com uma letra maiúscula ou não, onde colocar chaves, etc., tenho minhas próprias preferências. Mas estas considero apenas isso: preferências pessoais, facilmente anuladas por acordos específicos de equipe ou projeto.

    
por 04.01.2011 / 12:20
fonte
3

Eu uso snake_case para todas as minhas variáveis.

Eu tento torná-los legais e específicos, sem abreviações desnecessárias. por exemplo. file_id em vez de fid.

Se eu estou apenas testando algo, geralmente uso a primeira letra do tipo. por exemplo. Se eu estiver no interpretador Python, usarei l para uma lista, s para string, etc.

Caso contrário, dou um nome descritivo.

Vou roubar a resposta do jensgram para evitar conflitos, boa ideia.

    
por 04.01.2011 / 11:00
fonte
1

Dois cenários em que consigo pensar:

  • Ao adicionar funcionalidade (hacking) em um código já confuso (por alguma razão isso acontece muito em extensões TYPO3), prefiro prefixo minhas variáveis com minhas iniciais ( $jgXxx ). Isso me deixa bastante confiante de que não estou introduzindo conflitos em código PHP que nem eu quero entender.

  • Quando eu só preciso de um espaço reservado, geralmente uso o prefixo $tmpXxx .

por 04.01.2011 / 10:29
fonte
1

Todo nome da variável deve ser "óbvio" no sentido de que deve transmitir o propósito da variável de uma maneira legível e compreensível. Pergunte a si mesmo "o que essa variável representa em termos do maior problema que estou tentando resolver?" A resposta para essa pergunta é o nome da variável.

Não use nomes como "myVar" ou "variable1"; esses nomes não dizem nada sobre o que a variável representa. E pelo amor de Deus, o não perpetua o abuso da notação húngara que codifica informações de tipo primitivo no nome da variável (iCounter, szName, fRoot, etc.) se você puder ajudá-lo. Não é para isso que serve, e apenas desordena o código e torna os nomes difíceis de ler.

    
por 04.01.2011 / 16:43
fonte
0

Se realmente preciso criar uma variável que não seja necessária (por causa da semântica de idioma), eu uso _ ou $_ (depende da linguagem). AFAIR é proposto em algum lugar em PEPs do python.

Caso contrário, como KeesDijk afirmou, todas as outras variáveis têm um propósito e devem ser nomeadas adequadamente.

Se você tem uma convenção para seguir (um muito comum é usar i, j, k para loops, outros podem incluir nomes como tmp , swap etc) cumpri-lo.

Pessoalmente, prefiro não usar nomes como tmp - eles não são descritivos. Use algo mais claro, como 'rest_to_send', 'last_data_pointer' ou 'current_vertice';)

    
por 04.01.2011 / 11:06
fonte