¿El uso del paquete predeterminado de Java es una mala práctica?¿El uso del paquete predeterminado de Java es una mala práctica?
Respuesta
Sí, lo es. Idealmente, los nombres de los paquetes deben ser únicos a nivel mundial, para evitar el nombramiento de colisiones. Usar el paquete predeterminado rompe esta convención. También es imposible importar una clase del paquete predeterminado.
¿Por qué existen paquetes sin nombre, si es una mala idea? De the JLS §7.4.2:
Unnamed packages are provided by the Java platform principally for convenience when developing small or temporary applications or when just beginning development.
... Hasta que alguien más tenga la misma línea de pensamiento que usted. ¿Cuál es el problema con solo usar un paquete con nombre? –
@irreputable Me gusta tu lógica. – Michael
... sí, pero luego les preocupaba la gente como yo, así que todos decidieron no usarla. – irreputable
Sí, lo es. El problema es que no es posible importar clases desde el paquete predeterminado.
Hay problemas en muchos niveles diferentes:
- no puede importar clases del paquete por defecto de clases que no son
- obtendrá problemas de carga Clase si intente resolver el paquete predeterminado en varios artefactos
- ya no puede usar el alcance predeterminado y protegido como lo hace normalmente
- no hay nada obvio distinción entre su código y otro código
Sí lo es. Como han indicado otras respuestas, no puede cargar clases desde el paquete predeterminado.
ver que respuestas:
How to import a class from default package
How to access java-classes in the default-package?
Sin embargo, log4j requiere que la configuración se encuentra en el paquete por defecto. Esto es lo único que es razonable mantener allí.
Editar: Como Sean Patrick Floyd y Michael han señalado en los comentarios, puede poner cualquier archivo de configuración en el paquete predeterminado. Gracias a ambos por señalarme esto.
No solo log4j config, muchos tipos de datos de configuración. Pero no las clases de Java –
Los archivos de configuración de Spring (applicationContext.xml) suelen ir aquí también. – Michael
@SeanPatrickFloyd son comentarios como este que me ayudan a mejorar mis habilidades. Gracias. –
- 1. ¿El uso de procedimientos almacenados es una mala práctica?
- 2. es @unlink una mala práctica?
- 3. ¿Es una mala práctica usar el valor ordinal de Enum para indexar una matriz en Java?
- 4. ¿Es una mala práctica escribir a $ _POST?
- 5. ¿Es una mala práctica usar el módulo requireJS como singleton?
- 6. ¿Es una mala práctica usar Reflection in Unit testing?
- 7. ¿Es una mala práctica usar getattr de python extensivamente?
- 8. ¿Es una mala práctica usar el almacén de claves estándar de Java
- 9. Javascript ¿por qué FOR IN es una mala práctica?
- 10. ¿La mala práctica de "arrojar excepciones" es?
- 11. ¿Es una mala práctica usar su AppDelegate como Singleton?
- 12. ¿Es una mala práctica generar aleatoriamente datos de prueba?
- 13. ¿Es una mala práctica buscar en Rails I18n?
- 14. ¿Es una mala práctica usar variables temporales para evitar escribir?
- 15. ¿Es una mala práctica tener un método de inicialización largo?
- 16. ¿Qué es una mala práctica al usar los parámetros?
- 17. ¿La palabra clave "con" Delphi es una mala práctica?
- 18. ¿Es una mala práctica agregar propiedades a los nodos DOM?
- 19. ¿Es una mala práctica tener estado en una clase estática?
- 20. ¿Es una mala práctica escribir manipuladores de eventos en línea
- 21. ¿La seguridad del transporte es una mala práctica para el servicio WCF a través de Internet?
- 22. com.sun.awt uso del paquete
- 23. ¿Se consideran iframes 'mala práctica'?
- 24. ¿Los argumentos NULL son una mala práctica?
- 25. ¿Es una buena o mala práctica llamar a métodos de instancia desde un constructor java?
- 26. ¿Es una mala práctica usar uno mismo en decoradores?
- 27. ¿Es una mala práctica poner usuarios externos en Active Directory?
- 28. ¿Es una mala práctica usar muchos viewmodels en asp.net mvc
- 29. ¿Es una mala práctica devolver vistas parciales que contengan javascript?
- 30. ¿Se considera una mala práctica utilizar el posicionamiento absoluto?
Tengo vagos recuerdos de problemas que surgen del uso del paquete predeterminado cuando trato de referirme a las clases en ese paquete desde otros paquetes 'reales'. – Oliver
Sí, a menos que esté escribiendo un código desechable. – aroth
Depende de lo que estés haciendo. Para la tarea de una clase de Java está bien. Cualquier otra cosa: simplemente colóquelo en un paquete con nombre y estará a salvo. –