¿Se fomenta el uso de variables de una letra en Java? En fragmentos de código o tutoriales, a menudo los ves. ¡No puedo imaginar que se fomente su uso porque hace que el código sea relativamente más difícil de leer y nunca veo que se usen en otros lenguajes de programación!
java
coding-standards
variables
William Edwards
fuente
fuente
Respuestas:
Nombrar correctamente las cosas es difícil. Muy duro. Si lo miras de otra manera, también puedes tomar esto como que significa que las cosas con un nombre apropiado son importantes. (De lo contrario, ¿por qué habría gastado tanto esfuerzo nombrarlo?)
Pero, a veces, los nombres de las cosas simplemente no son importantes. Es por eso que tenemos cosas como funciones anónimas ("lambdas"), por ejemplo: porque a veces simplemente no vale la pena nombrar cosas.
Hay muchos ejemplos, donde los nombres de variables de una sola letra (o muy cortos) son apropiados:
i
,j
,k
,l
Para los índices de buclek
yv
para la clave y el valor en un mapan
para un número (por ejemplo, enMath.abs(n)
)a
,b
,c
Para objetos arbitrarios (por ejemplo, enmax(a, b)
)e
para el elemento en unfor each
bucle genéricof
para la función en una función de orden superiorp
para la función predicado en un filtroT
,T1
,T2
, ... para las variables de tipoE
para variables de tipo que representan el tipo de elemento de una colecciónR
para una variable de tipo que representa el tipo de resultado de una funciónex
para la excepción en unacatch
cláusulaop
para la operación en un mapa o pliegues
para indicar el plural, es decir, una colección (por ejemplo,ns
para una colección de númerosxs
yys
para dos colecciones arbitrarias de objetos genéricos)Son muy comunes en casi todos los idiomas que conozco (y probablemente también en aquellos que no conozco). Haskell, F #, ML, Ruby, Python, Perl, PHP, C #, Java, Scala, Groovy, Boo, Nemerle, D, Ir, C ++, C, lo que sea.
fuente
k
y estál
en él, eso está demasiado lejos (para empezar, no debería tener tantos bucles anidados; extráigalos en funciones) . Personalmente, nunca uso más de una variable de 1 letra por función, pero disparo por 0.l
olen
se usa para una longitud yarr
para una matriz (por ejemplo:)for(var i=0; l=arr.length; i<l; i++)
. Además,fn
se puede usar en lugar def
cuando se refiere a una función.Si su ciclo no hace más que usar una variable para contar
entonces sí, este es el mejor nombre que podrías usar. Cualquier cosa más larga no puede hacer que la semántica sea más obvia, pero lleva mucho más tiempo leerla.
Si la variable se usa dentro del bucle, un nombre significativo puede ser útil.
Si su variable se usa en todo el método, su nombre debería ser más largo; si se usa en toda la clase, es mejor que su nombre se explique por sí mismo, de lo contrario, seguramente disminuirá la claridad de su código.
En resumen, cuanto mayor sea el alcance de la variable, más largo debe ser su nombre.
fuente
index
al iterar sobre una matriz, por ejemplo.i
es una palabra adecuada con un significado definido con precisión, a saber, "índice del que no debe preocuparse demasiado". Pero supongo que es una cuestión de familiaridad. Si lees mucho Haskell, te acostumbrarás a leerm
como mónada ,f
como functor ,x
como algún objeto ,xs
como una lista dex
s, etc.i
sea "el mejor nombre que pueda usar" para un bucle que usa una variable solo para contar. En ese caso, preferiría vercount
usado como el nombre de la variable: instantáneamente comprensible.for (int count = 0; count < 10; count++)
owhile (count--)
.Al leer el código en la respuesta de Kilian, no creo que "haya un bucle, y haya una variable, y tenga el tipo int, y tenga un nombre, y el nombre sea i, y se inicialice a 0,. .. ". Simplemente pienso "bucle ..." donde los tres puntos representan detalles sin importancia en los que ni siquiera pienso. En la mente de mi programador, esa variable realmente no existe, es solo un artefacto que tengo que escribir, como for (;;) {} que lo convierte en un bucle.
Dado que esa variable ni siquiera existe en mi mente, ¿por qué debería darle un nombre, más allá de lo que es absolutamente necesario?
fuente
i
, sino_
para la variable obviamente sin sentido. Pero no todos están familiarizados con Prolog, y probablemente crearía más atención de la que elimina.for (...)
encabezado._
es un identificador legal como cualquier otro, hubo un cambio reciente que indica que las variables locales no utilizadas llamadas_
(o que comienzan con_
) no generan una advertencia de "variable local no utilizada", aunque Ruby normalmente advierte sobre ellas.Si se refiere a las letras i, j, k como índices dentro de un bucle, esa es una práctica común en Java y otros lenguajes de programación. Aunque probablemente sea mejor usar un para cada bucle de estilo, como
en lugar de
En Java, ese estilo de bucle solo se introdujo recientemente. Esa puede ser la razón por la que lo está notando más para Java, ya que recorrer los índices solía ser la forma más común de recorrer una matriz o lista.
Hay algunos otros casos en los que las letras simples pueden ser apropiadas, como cuando se implementa una función matemática en la que letras simples como n, x o y, ya pueden ser comunes. Pero en general, no, nombra tus variables como algo significativo.
fuente