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

 import com.mygame.ui.login.LoginInfoSQLiteOpenHelper.*; 

¿Es esta una buena practica?
¿O la forma tradicional de referirse mejor a las constantes?

 LoginInfoSQLiteOpen.USERNAME 

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

  • Buenas prácticas para multi-threading
  • Cómo Caché los datos de Json para estar disponibles sin conexión?
  • ¿Por qué mis intenciones no se entregan correctamente?
  • Diferencias entre varios tipos de bool?
  • Vista de imagen que no envuelve contenido
  • Guardar archivo en una carpeta específica con Google Drive SDK
  • Http get exception El host de destino no debe ser null en ICS
  • Solicitar permisos de tiempo de ejecución desde v4.Fragment y tener devolución de llamada ir a Fragment?
  • Espacio en blanco al escalar imageview en gridview
  • Gestión de la sesión de inicio de sesión de facebook sdk en android
  • Inspeccionar elementos de la interfaz de usuario en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.