¿Declarar las variables locales tan tarde como sea posible o en la llave más cercana que pertenecen?
Estoy trabajando para establecer algunos estándares de prácticas de programación para mi organización. Haciendo así me topé con el tema "Título de esta pregunta"
Algunos encuentran que es mejor declarar las variables lo más tarde posible y algunas encuentran que es bueno tenerlas en la parte superior de la cinta de inicio del método.
- Public static variable o use putExtra método de clase de intención
- Gradle buildConfigField con una variable entera
- ¿Debo usar estática o getters / setters?
- Visualización de la variable en pantalla usando Android por TextViews
- Android: cómo fragmentar una variable global de Actividad
Oracle Standard también dice para declararlos lo antes posible. También lo hago en favor de declararlos en la llave más cercana que pertenecen.
Las preocupaciones son
-
Legibilidad del código
-
Actuación
-
Menos error propenso
Cualquier comentario es bienvenido.
- Problema al guardar las preferencias compartidas en Android
- Cómo analizar un doble de EditText a TextView? (Androide)
- Usuarios únicos de Android google analytics
- No se puede ver el contenido de la variable final dentro de la clase anónima al depurar en Eclipse una aplicación para Android
- ¿Cómo obtengo las preferencias para trabajar en Android?
- En Java, ¿cómo verifica si una variable float es null?
- Pérdida de variables orientaciones de conmutación
- ¿Cómo compartir una variable entre Java y C en android JNI?
Esto es lo que McConnell dice en su libro de lectura obligada Code Complete 2:
Idealmente, declare y defina cada variable cerca de donde se usa. Una declaración establece el tipo de una variable. Una definición asigna a la variable un valor específico. En los idiomas que lo soportan, como C ++ y Java, las variables deben ser declaradas y definidas cerca de donde se utilizan por primera vez.
También recomienda mantener las variables vivas durante el menor tiempo posible y minimizar el alcance.
Lo importante para mí es seguir las convenciones de nombres (las Convenciones de código Java de Sun son ampliamente utilizadas). En cuanto a dónde se declaran por primera vez, retrasaría la declaración tanto como sea posible por razones de rendimiento (declarar una var que no puede usar es una especie de desperdicio). A menos que sepa de antemano que se va a utilizar con seguridad, en ese caso se puede agrupar con otras vars para mejorar la legibilidad. Creo que eso es lo que dice el JCC .
Para la legibilidad de código de código encuentro declarar la variable al principio de un bloque la mejor opción.
Al ir a través de código que siempre saben dónde buscar la declaración en lugar de tener que mirar entre las líneas de código. También es mejor cuando se mira un método para ver primero las variables declaradas y luego el código. Pienso en él como una receta en un libro del cocinero que usted lista los ingredientes necesarios separados de la instrucción de la receta.
En cuanto al rendimiento no veo cómo esto haría ninguna diferencia. Aunque declarar tarde puede ahorrar un poco de memoria creando sólo la variable cuando sea necesario al final de un bloque, utilizará la misma cantidad de memoria que tendría si declaró al principio de un bloque.
Error propenso i diría que es las mismas razones que la legibilidad.
Declare en el ámbito más pequeño necesario y declare al principio del bloque.
Creo que la 'Legibilidad del Código' es el único punto importante aquí. Y el código es definitivamente más legible si las variables se declaran más cerca de donde se utilizan.
Pero, a veces, para evitar "errores" para los nuevos programadores de transición entre lenguas, un estilo particular de método de codificación puede ser adoptado. Por ejemplo, JavaScript tiene escopo funcional vs Java que tiene bloque de alcance. Un programador Java puede encontrarse con problemas en JavaScript si no está al tanto del alcance funcional de JavaScript. Por lo tanto, en el caso de JavaScript, con el fin de evitar posibles bugs, simplemente se recomienda declarar todo al principio de una función / método.
Como he mencionado anteriormente, 'Performace' no debería ser una preocupación. Sin embargo, si decide declarar las variables más cerca de donde se utilizan, podría ayudar a reducir los costos de declaración e inicialización de las variables.
Buena pregunta Javanator, Según mi análisis
Legibilidad del código:
Buenas prácticas para declarar variables en el método de inicio, porque es fácil de mantener, y menos confusión.
Actuación:
Caso 1:
Si declaramos las variables en el comienzo del método y el método que tiene cientos de declaraciones necesitamos 10 variables en el último antes de 50 instrucciones ocupando innecesariamente la memoria para esas variables.
Si necesitamos 20 variables en el método y lo declaramos al principio, si tenemos alguna excepción en la sentencia muy inicial ocupando innecesariamente la memoria.
Caso 2:
Si declaramos las variables donde lo necesitamos da un poco más de rendimiento.
- ListView Selector no funciona con el conjunto de fondo de ListViewItem
- No se puede iniciar la actividad ComponentInfo