L'uso del pacchetto predefinito di Java è una cattiva pratica?L'uso del pacchetto predefinito di Java è una cattiva pratica?
risposta
Sì, lo è. Idealmente, i nomi dei pacchetti dovrebbero essere unici a livello globale, per evitare conflitti di denominazione. L'utilizzo del pacchetto predefinito interrompe questa convenzione. È anche impossibile importare una classe dal pacchetto predefinito.
Perché esistono pacchetti senza nome, se è una cattiva idea? Da 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.
... Fino a quando qualcun altro ha lo stesso treno di pensiero come te. Qual è il problema con l'uso di un pacchetto con nome? –
@irreputable Mi piace la tua logica. – Michael
... sì, ma poi si sono preoccupati per le persone come me, così hanno deciso di non usarlo. – irreputable
Sì, lo è. Il problema è che non è possibile importare classi dal pacchetto predefinito.
Ci sono problemi a molti livelli diversi:
- non è possibile importare classi nel pacchetto di default da classi che non sono
- otterrete problemi di classe di carico se si prova a risolvere il pacchetto predefinito in più artefatti
- non puoi più utilizzare l'ambito predefinito e protetto come normalmente puoi
- non è ovvio distinzione tra il tuo codice e altro codice
Sì, lo è. Come hanno affermato altre risposte, non è possibile caricare classi dal pacchetto predefinito.
vedere così risponde:
How to import a class from default package
How to access java-classes in the default-package?
Tuttavia, log4j richiede che la configurazione si trova nel pacchetto di default. Questa è l'unica cosa che è ragionevole da mantenere lì.
Modifica: Come indicato da Sean Patrick Floyd e Michael nei commenti, è possibile inserire qualsiasi file di configurazione nel pacchetto predefinito. Grazie a tutti e due per avermelo fatto notare.
Non solo log4j config, molti tipi di dati di configurazione. Ma non le classi Java –
I file di configurazione Spring (applicationContext.xml) vanno spesso anche qui. – Michael
@SeanPatrickFloyd sono commenti come questo che mi aiutano a migliorare le mie capacità! Grazie. –
- 1. Webpack 2 - è una cattiva pratica usare il pacchetto "fornitori"?
- 2. È una cattiva pratica utilizzare il keystore standard Java
- 3. Perché è una cattiva pratica -compile (export_all)?
- 4. rel = "tooltip", è una cattiva pratica?
- 5. È una cattiva pratica usare campi nascosti?
- 6. È una cattiva pratica scrivere su $ _POST?
- 7. Implementazione del servizio Windows IDisposable - È una cattiva pratica?
- 8. È una cattiva pratica usare Reflection in Unit testing?
- 9. È una cattiva pratica inviare HTML su una connessione WebSocket
- 10. È una cattiva pratica avere un lungo metodo di inizializzazione?
- 11. È una cattiva pratica chiamare le rotte espresse da un'altra?
- 12. La sottoclasse in Objective-C è una cattiva pratica?
- 13. Il riferimento circolare tra gli oggetti è una cattiva pratica?
- 14. Questa sorta di cattiva pratica dello stile di eccezione Java?
- 15. Gli argomenti NULL sono una cattiva pratica?
- 16. È una cattiva pratica scavalcare le variabili LESS?
- 17. È una cattiva pratica usare le funzioni in OOP?
- 18. La ricerca pigra in Rails I18n è una cattiva pratica?
- 19. È una cattiva pratica restituire viste parziali contenenti javascript?
- 20. È una cattiva pratica aggiungere proprietà ai nodi DOM?
- 21. È una cattiva pratica digitare typedef un puntatore intelligente?
- 22. È in genere una cattiva pratica avere molti parametri "initWith"?
- 23. Mixing GET con POST - è una cattiva pratica?
- 24. È una cattiva pratica usare array multidimensionali in C/C++?
- 25. È una cattiva pratica utilizzare molti viewmodels in asp.net mvc
- 26. È considerata una cattiva pratica utilizzare attributi HTML non standard?
- 27. È una pratica buona o cattiva chiamare i metodi di istanza da un costruttore java?
- 28. Barra finale prima di una stringa di query. Cattiva pratica?
- 29. È una cattiva pratica utilizzare le classi Java proprietarie di Sun?
- 30. Java: è una cattiva pratica non avere un costruttore di classi?
Ho vaghe memorie di problemi derivanti dall'utilizzo del pacchetto predefinito quando si tenta di riferirsi alle classi di quel pacchetto da altri pacchetti 'reali'. – Oliver
Sì, a meno che non si stia scrivendo il codice throw-away. – aroth
Dipende da cosa stai facendo. Per i compiti di classe Java, va bene. Qualcos'altro - basta metterlo in un pacchetto con nome e sei al sicuro. –