¿Es una buena práctica de programación usar campos estáticos de importación?
Declaro algunas variables constantes en mi clase SQLiteOpenHelper
:
public static final String USERNAME = "user_name"; public static final String PASSWORD = "password";
En una Activity
donde crea consultas SQL, importo estos campos:
- Las sugerencias de auto de EditText están en blanco o no existen
- Problema con el espacio en blanco de Android TabWidget
- Fragmento de Android objeto nulo mNextAnim Crach interno
- ¿Qué hace a Guice incapaz de funcionar en Android excepto como Guice-no-aop?
- Reproducir audio por decodificación Base64
import com.mygame.ui.login.LoginInfoSQLiteOpenHelper.*;
¿Es esta una buena practica?
¿O la forma tradicional de referirse mejor a las constantes?
LoginInfoSQLiteOpen.USERNAME
- SEÑAL FATAL 11 (Sigsegv) en 0x00000000 (código = 1)?
- ActionBarActivity: no se puede resolver con un tipo
- Cómo pasar un argumento a un hilo
- Substring: obtener índice de "o" ocurrencia en cadena
- Nullpointerexception cuando compruebo para el servicio corriente en la prueba de Roboelectric
- Ojo de Eclipse para un chico de Visual Studio
- Establecer setChunkedStreamingMode en HttpURLConnection no puede entregar datos al servidor
- Cómo detectar todos los dispositivos conectados en una red WiFi desde la aplicación para Android
Si miras el código de alguien y ves un campo como
foo.do(baz, USERNAME);
Wut (!), ¿De dónde vino esa var?
Search, grep, donde se declara?
Usándolo como ClassName.FIELD
hace las cosas mucho más claras y más limpias. Evita la confusión, ya veces tiene más sentido tener un nombre de clase apropiado que denota el campo, que un campo que salió de la nada.
Bien, no todo el mundo utiliza un IDE, y no todo el mundo lee el código a través de un IDE (tal vez a través de un repositorio en la web), e incluso algunos consideran VIM un IDE, y uso vim mucho (aunque no lo pienso) Como IDE).
Por lo tanto, no se trata de lo que un IDE puede o no puede hacer, sino más de lo que es la lectura de código . Código de lectura, código de calidad, expresando ideas en su lenguaje de programación de elección, de una manera a través de abstracciones que tienen sentido y atar bien juntos.
Recomiendo el segundo método, sólo la importación de las clases no los campos. Por lo tanto prefijar sus constantes con la clase propietaria, como LoginInfoSQLiteOpen.USERNAME
. Puede llegar a ser altamente redundante, pero es mucho más legible y mantenible en el largo plazo.
Unos años tarde a la fiesta … pero creo que vale la pena dar el punto de vista opuesto. Hay una razón por la cual Java fue diseñado para tener importaciones de campo estático, y la razón es ocultar cómo se implementa la clase a los usuarios de la clase. Este es un importante principio de diseño para el código orientado hacia afuera. Estoy de acuerdo con c00kiemon5ter tomar en él, sin embargo, puede haber situaciones en las que vale la pena.
Más información sobre la importación estática de campos se puede encontrar aquí: https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html
- Fragmento de transacción no funciona cuando se utiliza AppCompatActivity o FragmentActivity
- Vista de lista Scroll Not Smooth