¿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.

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

  1. Legibilidad del código

  2. Actuación

  3. Menos error propenso

Cualquier comentario es bienvenido.

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.

  • Alinear el nombre de las variables en el android studio
  • Declaración de variables de botón como una matriz con un bucle for android
  • ¿Necesito restaurar todas las variables onResume?
  • Ningún campo de instancia
  • Variables finales de Android
  • ¿Hay alguna manera de comprobar si una variable está definida en Java?
  • ¿WebView saveState () preserva variables / entorno de JavaScript?
  • Cómo crear una variable global en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.