¿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,lPara los índices de buclekyvpara la clave y el valor en un mapanpara un número (por ejemplo, enMath.abs(n))a,b,cPara objetos arbitrarios (por ejemplo, enmax(a, b))epara el elemento en unfor eachbucle genéricofpara la función en una función de orden superiorppara la función predicado en un filtroT,T1,T2, ... para las variables de tipoEpara variables de tipo que representan el tipo de elemento de una colecciónRpara una variable de tipo que representa el tipo de resultado de una funciónexpara la excepción en unacatchcláusulaoppara la operación en un mapa o plieguespara indicar el plural, es decir, una colección (por ejemplo,nspara una colección de númerosxsyyspara 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
ky estálen é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.lolense usa para una longitud yarrpara una matriz (por ejemplo:)for(var i=0; l=arr.length; i<l; i++). Además,fnse puede usar en lugar defcuando 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
indexal iterar sobre una matriz, por ejemplo.ies 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 leermcomo mónada ,fcomo functor ,xcomo algún objeto ,xscomo una lista dexs, etc.isea "el mejor nombre que pueda usar" para un bucle que usa una variable solo para contar. En ese caso, preferiría vercountusado 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