Wau, gracias Ramón! Cómo me hubiera gustado poder hacer la carrera para aprender estas cosas.
Pues todo claro excepto el último punto. Te explico:
En la app que estoy haciendo, para uso propio y muy cutrecilla, uso las menos variables posibles para que no se me cuelgue el móvil (un galaxy ace) por uso de memoria y que me consuma la menos batería posible. Había leído en algún foro lo de inicializar siempre las variables, aunque sea a null (aunque android studio creo que en alguna ocasión me ha dicho que inicializar a null es redundante). No sé el motivo real, y lo que comentas de controlar el estado no lo entiendo muy bien. Lo que si recuerdo que leí era que había que inicializar todas las variables para evitar problemas, por si acaso, y por un poco costumbre ya que en lenguajes de más bajo nivel era costumbre inicializar siempre por no sé qué motivo.
A lo que voy. En mi app tengo una o dos variables int public que voy usando en las funciones. Esto lo hago con conocimiento, pues tengo pocas funciones que las usan y no me voy a equivocar en el valor que tienen asignado. Pero a veces alguna de ellas se usa en dos funciones que trabajan casi solapadas y sí que tengo que asignarlas un valor específico.
Dependiendo del caso, esta variable puede que no se haya utilizado. Como no sé si la variable se ha utilizado o no, pues tengo dos opciones.
1 Pongo un if y si se ha cambiado el valor le asigno un valor que será fijo de 100, por ejemplo.
2 Le asigno el valor directamente, sin importar si es necesario cambiarle el valor o no.
En ese tipo de casos es en los que tengo la duda. ¿Es más efectivo comprobar primero o directamente asignar?. Personalmente pienso que un if es un ciclo más de proceso y consume más que asignar directamente, pero tengo la duda de qué es lo correcto y porqué.
Por cierto, y como curiosidad, me hice una app para manejo de archivos de mi móvil. En un edittext escribía lo que quería buscar y me devolvía los archivos que tenía.
Se me ocurrió que sería muy profesional que al ir escribiendo se fuera buscando y que te mostrase los resultados por pantalla. Funcionó bien con 10, 100 archivos, pero le metí 1.000 archivos al móvil y al ir a escribir en el edittext casi explota jeje. Lógicamente se me cerró la app. Por este tipo de cosas me como tanto la cabeza en lo de las variables y los ciclos.
Por último, que se me olvidó antes. ¿El uso de operadores ternarios es por eficiencia?
Se supone que estos dos códigos hacen lo mismo:
código que yo uso normalmente
if (x>y)
mayor = x;
else
mayor = y;
código ternario
mayor=(x>y)?x:y;
También me parece haber leído o escuchado en algún videotuto, que a los ingenieros os exigen escribir siempre el código imprescindible, por lo tanto en un examen el primer código estaría penalizado. Supongo que tendrá su razón de ser. Corrígeme si me equivoco
Un abrazo y gracias por tu tiempo.