Eu estava discutindo com as convenções de codificação de um desenvolvedor sênior para aplicar em nossos projetos (principalmente projetos Java / JEE). Eu discordei de uma convenção que ele propôs:
Os nomes de variáveis de instância devem começar com "_", variáveis locais com "loc" e parâmetros de método com "par", para que seja fácil identificar a origem e o escopo da variável.
Embora ele tenha apresentado argumentos a favor da memória e da legibilidade a curto prazo, discordei do fato de que ela diminui bastante a legibilidade, os IDEs gostam de variáveis de formato Eclipse de maneira diferente, dependendo do tipo, e esse problema seria evitado com um bom design de classe e método.
Você tem alguma opinião, argumento ou estudo que apóie meu argumento (ou se oponha a ele)?
Respostas:
Como a Wikipedia diz sobre o assunto - Regras para nomear java,
De acordo com minha experiência com os padrões de codificação, os nomes de variáveis de instância começam com "_" não são muito bons, como dizem os padrões da wikipedia.
variáveis locais com "loc" e parâmetros de método com "par", como você disse que seria fácil identificar uma origem e escopo de variáveis, mas deve ser para você, não para os outros programadores que podem passar algum dia pelo seu código de manutenção .
De acordo com a especificação do Código Limpo sobre os métodos, estes devem ser tão curtos quanto possível para facilitar a leitura e os nomes de variáveis não devem ser mapeados, eles devem ser relevantes para sua operação que seu método executa.
Prefixos de membro / escopo, você também não precisa mais prefixar variáveis de membro com m_. Suas classes e funções devem ser pequenas o suficiente para que você não precise delas. E você deve usar um ambiente de edição que destaque ou colore os membros para torná-los distintos.
Além disso, as pessoas aprendem rapidamente a ignorar o prefixo (ou sufixo) para ver a parte significativa do nome. Quanto mais lemos o código, menos vemos os prefixos. Eventualmente, os prefixos se tornam uma confusão invisível e um marcador de código mais antigo.
fonte
Esta é uma pergunta antiga, mas eu vou postar aqui de qualquer maneira. Tenho mais de 20 anos de programação e lidar com o código de outras pessoas.
Eu acho que nomear sua variável com uma indicação curta quanto ao escopo dela é realmente realmente útil para a próxima pessoa (ou você) que analisará seu código.
Ainda não se olha o código em um IDE com cores bonitas (e não me lembro o que as cores significam e o IDE diferente mostra cores diferentes, etc.).
É verdade que os métodos devem ser curtos o suficiente para que não sejam carregados com toneladas de variáveis e toneladas de código, mas mesmo com uma curta - quando você olha para um código totalmente desconhecido, às vezes é difícil dizer se uma variável é uma variável de classe, local variável ou parâmetro do método.
Ser capaz de distinguir rapidamente torna muito fácil revisar o código com o qual você não está familiarizado.
Veja este exemplo:
Agora, avalie o tempo e observe o código (extraído de ElasticsearchTemplate do projeto spring-data-elasticsearch - o código que eu estava revisando que me levou a pesquisar no Google o que as pessoas dizem sobre convenções de nomenclatura).
resultsMapper
?requestBuilding
um parâmetro?Aqui está minha sugestão simples sobre como as variáveis devem ser nomeadas:
HOST_NAME
).resultsMapper
).a
(por exemploaQuery
,aClazz
).my
(por exemplomyIndexName
,myType
).O código acima se torna:
}
Isso é perfeito? Acho que não. Mas o acima, no que diz respeito às variáveis, agora é mais fácil de ler. Existem outras coisas, como alinhamento e espaçamento, que não abordarei nesta resposta, pois não está relacionado à pergunta, o que facilitaria a leitura também.
Você não gosta de Camel Case? Ótimo, use sublinhados, etc., mas prefixe suas variáveis locais e seus parâmetros para torná-los diferentes das variáveis de instância de classe.
Você não gosta
a
emy
- tudo bem, apenas seja consistente no seu projeto e use outra coisa ... mas use alguma coisa.Regra # 1: consistência dentro do projeto.
Regra nº 2: facilite a leitura e não exija que o leitor saiba tudo antes de poder aprender.
fonte
Isso é em grande parte uma questão de preferência e, como tal, não há resposta 'correta'. Portanto, essa pergunta pode realmente ser encerrada. Mas, antes disso, deixe-me dizer que concordo totalmente com você. Prefixos diminuem a visibilidade no que me diz respeito. Muito menos o fato de que, se houver prefixos, eles devem ser usados para coisas mais úteis, como a intenção original da Notação Húngara , e não para coisas que seu IDE possa destacar de qualquer maneira.
Eu uso o SentençaCase para dados de instância (sejam variáveis ou constantes) e lower_case para parâmetros e variáveis locais, já que realmente há muito pouca ou nenhuma diferença entre os dois. Eu nunca, jamais, uso headlessCamelCase porque é coxo : um identificador de componente único parece minúsculo, mesmo se ele pretendesse ser headlessCamelCase.
fonte