2010-09-01 10 views
6

Disculpas si esto termina siendo una pregunta estúpida, pero me estaba preguntando por qué esto se hace en el paso 9 de la libreta Ejercicio 1 tutorial (http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html) ...Android Bloc de notas Ejercicio 1 tutorial y Menu.FIRST

public static final int INSERT_ID = Menu.FIRST; 

... y luego INSERT_ID se usa en todas partes, en lugar de simplemente usar Menu.FIRST directamente en lugar de usarlo en todas partes?

Estaba pensando que no quiero crear nuevas variables si no es necesario, especialmente cuando ya son estáticas.

¿Es costoso crear INSERT_ID?

+3

¡no hay preguntas estúpidas! – Key

Respuesta

3

Porque si utilizó el Menú. Primero en todas partes, decidió mover esa opción en el menú para que ya no sea el primer elemento que necesita para actualizar todas las referencias. De esta manera, solo necesita actualizarlo en un solo lugar y el INSERT_ID, con un nombre más sensato, reflejará los cambios que haya realizado en cualquier otro lugar.

En cuanto al rendimiento de la creación de nuevas variables: Sí, la creación de la variable consumirá una cantidad (insignificante) de tiempo de CPU, y sí la memoria usará una cantidad (insignificante) de memoria, pero debe nunca pongas el rendimiento antes de la reabilidad del código hasta que hayas determinado que has golpeado un cuello de botella: estarías en un entorno muy restringido para que esto sea algo cercano a un problema.

Finalmente, muchos compiladores alinearán las referencias a INSERT_ID de todos modos. Esto significa que todas las referencias a INSERT_ID se reemplazarán en tiempo de compilación con el valor en Menú. Primero y la variable nunca se creará realmente. No sé lo suficiente sobre el compilador de Android para decirlo con certeza de una forma u otra, pero me sorprendería si no lo hiciera.

+0

Bueno, viniendo del desarrollo de Java Swing, no tuve que preocuparme tanto por los recursos del sistema, etc., y necesito para el desarrollo de Android (basado en ver los videos del 2010 Google I/O). En realidad estaba al tanto de los puntos que mencionaste (aunque un buen editor de código puede buscar/reemplazar el Menu.FIRST a cualquier valor nuevo que desees), y normalmente soy REALMENTE grande en la legibilidad del código, pero como dije , pensaba que para el desarrollo de Android, cuantas menos variables definiera/instanciara, mejor. Gracias por su respuesta. –

+0

Entiendo lo que dice @Martin Harris, pero no entiendo por qué debería usar Menu.FIRST en absoluto. ¿No se pudo declarar INSERT_ID como INSERT_ID = 1 ;? – prostynick

+1

@prostynick Porque es posible que una versión más reciente del marco de Android cambie la implementación del menú subyacente de modo que Menu.FIRST se convierta en 0, o -1, o 456. Esto probablemente nunca ocurra porque demasiadas aplicaciones van a ser difíciles codificado a 1, pero usar const le da legibilidad (INSERT_ID es el primer elemento del menú, no "1" que puede ser el primero o el segundo elemento según cómo indexe) y compatibilidad futura sin riesgo a un costo cero, por lo que ¿por qué no usarlo? –

Cuestiones relacionadas