Eu aprendi desde o ensino médio que definir variáveis como esta:
int _a;
ou
int __a;
deve ser considerada uma prática ruim, porque isso acabaria confundindo os compiladores que usam variáveis que começam com um sublinhado para nomear variáveis temporárias.
Até onde eu sei, essa é a razão pela qual algumas pessoas gostam de mover o sublinhado no final do nome, como:
int a_;
No entanto, vejo um monte de código ao redor que faz uso de variáveis de início de sublinhado. E esse código cria bastante bem com o Visual Studio 2010 e o g ++ 4.x.
Então eu me pergunto: isso não é problema hoje em dia? Os compiladores modernos são mais inteligentes quanto às convenções de nomenclatura?
c++
programming-practices
naming-standards
Emiliano
fonte
fonte
Respostas:
Aparentemente, você está entendendo mal o motivo pelo qual os sublinhados de prefixo são uma má prática. Para encurtar, é porque o padrão C e C ++ reserva esse prefixo para detalhes de implementação, por exemplo, para implementação de biblioteca padrão. (observe que _ e __ não estão reservados para as mesmas coisas, consulte os comentários)
Mesmo que os nomes estejam no escopo (namespace, classe etc.), pode haver alguns nomes globais, em particular macros, que usam esse prefixo e podem silenciosamente interromper seu código, se você também os usar.
Portanto, basicamente, na maioria das vezes, é seguro usar esses prefixos, mas se você não os usar, terá 100% de garantia de que sua nomeação nunca entrará em conflito com os nomes de implementação.
É por isso que, na dúvida, não use esse prefixo.
fonte
_limit
não é um erro, mas como uma função global. Eu acho que é melhor ter uma política simples que diga "não use sublinhados líderes, sem exceção" do que uma política que permita isso em alguns contextos e não em outros. Mas podemos concordar em diferir nisso. E só para esclarecer, não tenho problemas com sublinhados em outros lugares além do início.O uso de dois sublinhados é definitivamente ruim - reservado para detalhes de implementação específicos do compilador. Isso não se aplica ao uso de um sublinhado.
Algumas pessoas odeiam sublinhados. Se você chama alguma coisa
m_index
ouhighest_price
ou_a
- eles a detestam. Trabalhei com alguém de 25 anos atrás que me falou sobre uma impressora IBM específica (muito popular) que se encaixava em mais linhas na página, omitindo o pixel inferior em todas as outras linhas. Isso era bom para memorandos ou para a saída de grandes quantidades de números e afins, mas teve o efeito de tornar invisível a metade de seus sublinhados. (Sim, de verdade!) As pessoas dessa geração geralmente têm o ódio sublinhado irracional, seja pela interação com a impressora ou por trabalhar com alguém que se depara com essas sublinhados que não devem ser usadas.A maioria das pessoas encontrar usando letras maiúsculas e minúsculas (uma opção que não tinha em, digamos, Fortran) uma abordagem mais legível:
mIndex
,HighestPrice
,a
levantar-se muito bem aos exemplos anteriormente sublinhadas. Vou lhe dar duas regras:_limit
para parâmetros de função,m_limit
para variáveis-membro, nunca use sublinhados, maiúsculas e minúsculas, coloque todas as palavras em maiúscula, húngaro, algo assim ) e atenha-se a elas. Não se intrometa às vezes com sublinhados no começo, às vezes no final, às vezes sem usá-los e com cinco convenções diferentes. Ser consistente.A impressora em questão já se foi. Se você gosta de usar um sublinhado de cada vez, sinta-se à vontade para. Mas entenda, os ódios sublinhados ainda existem.
fonte