O uso de variáveis de uma letra é incentivado em Java? Nos trechos de código ou nos tutoriais, você costuma vê-los. Não consigo imaginar usá-los, porque isso torna o código relativamente mais difícil de ler e nunca os vejo sendo usados em outras linguagens de programação!
java
coding-standards
variables
William Edwards
fonte
fonte
Respostas:
Nomear corretamente as coisas é difícil. Muito difícil. Se você olhar para o outro lado, você também pode entender que as coisas nomeadas corretamente são importantes. (Caso contrário, por que você gastaria o esforço para nomeá-lo?)
Mas, às vezes, os nomes das coisas simplesmente não são importantes. É por isso que temos coisas como funções anônimas ("lambdas"), por exemplo: porque às vezes simplesmente não vale a pena nomear coisas.
Existem muitos exemplos em que nomes de variáveis com uma única letra (ou muito curtos) são apropriados:
i
,j
,k
,l
Para os índices de ansak
ev
para a chave e o valor em um mapan
para um número (por exemplo, emMath.abs(n)
)a
,b
,c
Para objectos arbitrários (por exemplo, emmax(a, b)
)e
para o elemento em umfor each
loop genéricof
para a função em uma função de ordem superiorp
para a função de predicado em um filtroT
,T1
,T2
, ... para variáveis do tipoE
para variáveis de tipo que representam o tipo de elemento de uma coleçãoR
para uma variável de tipo que representa o tipo de resultado de uma funçãoex
para a exceção em umacatch
cláusulaop
para a operação em um mapa ou dobras
para indicar o plural, ou seja, uma coleção (por exemplo,ns
para uma coleção de númerosxs
eys
para duas coleções arbitrárias de objetos genéricos)Eles são muito comuns em praticamente todas as linguagens que conheço (e provavelmente também nas que não conheço.) Haskell, F #, ML, Ruby, Python, Perl, PHP, C #, Java, Scala, Groovy, Boo, Nemerle, D, Go, C ++, C, o nome dele.
fonte
k
el
nos índices de loop, que é muito longe (você não deve ter que muitos loops aninhados para começar; extraí-los para funções) . Pessoalmente, eu nunca usar mais de uma variável de 1-letra por função, mas eu atirar para 0.l
oulen
é usado para um comprimento earr
para uma matriz (por exemplofor(var i=0; l=arr.length; i<l; i++)
:). Além disso,fn
pode ser usado em vez def
quando você se refere a uma função.Se o seu loop não fizer nada além de usar uma variável para contar
então sim, esse é o melhor nome que você poderia usar. Qualquer coisa a mais não pode tornar a semântica mais óbvia, mas leva muito mais tempo para ler.
Se a variável for usada dentro do loop, um nome significativo poderá ser útil.
Se sua variável for usada em todo o método, seu nome deverá ser maior; se for usado em toda a classe, é melhor que seu nome seja totalmente auto-explicativo; caso contrário, certamente diminuirá a clareza do seu código.
Em resumo, quanto maior o escopo da variável, maior o seu nome.
fonte
index
ao iterar sobre uma matriz, por exemplo.i
é uma palavra apropriada com um significado definido com precisão, a saber "índice com o qual você não precisa se preocupar muito". Mas acho que é uma questão de familiaridade. Se você ler um monte de Haskell, você vai se acostumar a lerm
como mônada ,f
como functor ,x
como algum objeto ,xs
como uma lista dex
s e assim por diante.i
seja "o melhor nome que você poderia usar" para um loop que usa uma variável apenas para contagem. Nesse caso, prefiro vercount
usado como o nome da variável: instantaneamente compreensível.for (int count = 0; count < 10; count++)
ouwhile (count--)
.Lendo o código na resposta de Kilian, acho que "não há um loop e existe uma variável, e ele tem o tipo int, e tem um nome, e o nome é i, e é inicializado como 0,. .. " Eu apenas penso em "loop ...", onde os três pontos representam detalhes sem importância nos quais eu nem penso. Na minha mente de programador, essa variável realmente não existe, é apenas um artefato que eu tenho que digitar, como o for (;;) {} que a transforma em um loop.
Como essa variável nem sequer existe em minha mente, por que eu daria um nome além do que é absolutamente necessário?
fonte
i
, mas_
a variável obviamente sem sentido. Mas nem todo mundo está familiarizado com o Prolog, e provavelmente criaria mais atenção do que remove.for (...)
cabeçalho._
um identificador legal como qualquer outro, houve uma mudança recente de que variáveis locais não utilizadas nomeadas_
(ou iniciadas com_
) não geram um aviso de "variável local não utilizada", mesmo que Ruby normalmente as avise.Se você estiver se referindo às letras i, j, k como índices em um loop, essa é uma prática comum em Java e outras linguagens de programação. Embora provavelmente seja melhor usar um loop para cada estilo, como
ao invés de
Em Java, esse estilo de loop foi introduzido apenas recentemente. Pode ser por isso que você está percebendo mais isso em Java, pois o loop sobre os índices costumava ser a maneira mais comum de loop sobre um array ou lista.
Existem alguns outros casos em que letras simples podem ser apropriadas, como na implementação de uma função matemática, em que letras simples como n, x ou y já podem ser comuns. Mas, em geral, não, dê um nome significativo às suas variáveis.
fonte