Ho una classe di grandi dimensioni (circa 40 metodi) che fa parte di un pacchetto che invierò come corso del corso. Attualmente, i metodi sono piuttosto confusi in termini di utilità pubblica/privata ecc. E voglio ordinarli in modo ragionevole. C'è un modo standard per farlo? Per esempio. normalmente i campi sono elencati prima dei metodi, i costruttori sono elencati prima di altri metodi e i getter/setter durano; per quanto riguarda i restanti metodi?Esistono convenzioni per l'ordinazione dei metodi Java?
risposta
Alcune convenzioni elencano prima tutti i metodi pubblici e poi tutti quelli privati. Ciò significa che è facile separare l'API dall'implementazione, anche quando non è coinvolta un'interfaccia, se si capisce cosa intendo.
Un'altra idea è quella di raggruppare i metodi correlati insieme: ciò semplifica l'individuazione delle giunzioni in cui è possibile suddividere la classe esistente esistente in diverse più piccole e più mirate.
+1. Preferisco ordinare per visibilità. Vergogna Eclipse non può farlo automaticamente (raggrupperà sempre tutti i costruttori insieme e tutti i metodi insieme). – finnw
@finnw, presenta un bug report. Da lì è stato possibile attuare cose più strane. –
40 metodi in una singola classe sono un po 'troppo.
Avrebbe senso spostare alcune delle funzionalità in altre classi, opportunamente denominate. Quindi è molto più facile dare un senso.
Quando ne hai di meno, è molto più facile elencarli in un ordine di lettura naturale. Un paradigma frequente è quello di elencare le cose prima del o dopo il di cui hai bisogno, nell'ordine in cui ne hai bisogno.
Questo di solito significa che main() va sopra o sotto.
sei così giusto - questo non è un problema di ordinazione – kostja
Non hai sempre una scelta, ad esempio se stai implementando un'interfaccia con molti metodi. – finnw
Questa è un'attività Android, quindi ci sono molte cose che semplicemente non possono andare da nessuna parte, 'onPause()', 'onResume()' ecc., Così come tutti i miei campi 'OnClickListener', che, sebbene siano campi, non guardare o comportarsi come loro, quindi è ragionevole elencarli separatamente. – fredley
Si sta utilizzando Eclipse? Se è così, rimarrò con l'ordinamento dei membri predefinito, perché probabilmente è più familiare a chiunque legga il tuo codice (anche se non è il mio preferito).
La mia "convenzione": statica prima dell'istanza, pubblica prima privato, costruttore prima dei metodi, ma metodo principale in basso (se presente).
Non sono sicuro che ci sia uno standard universalmente accettato, ma le mie preferenze personali sono;
- costruttori primi
- metodi statici prossimi, se v'è un metodo main, sempre prima di altri metodi statici
- metodi non statici prossimo, di solito in ordine di importanza del metodo seguito mediante qualsiasi metodo che chiamate. Ciò significa che i metodi pubblici che chiamano altri metodi di classe apparire verso i metodi migliori e privati che richiedono altri metodi di solito finiscono verso le
- metodi standard inferiori come
toString
,equals
ehashcode
prossimi - getter e setter hanno un posto speciale Right Reserved in fondo alla classe
Preferisco davvero i costruttori alla fine perché un costruttore correttamente scritto dovrebbe fare ben poco oltre ad assegnare i suoi argomenti alle proprietà. – GordonM
il legame più precisa di «convenzioni Codice»: «Class and Interface Declarations»
+1, afaik - questo è l'UNICO post che in realtà risponde alla domanda. Sì, esiste un ordine standard dettato da Oracle e Sun: 1. commento pubblico, 2. classe, 3. commento interno, 4. dati statici, 5. dati di istanza, 6. cori, 7. metodi e all'interno di ciascun gruppo di sezioni logicamente, non per accessibilità. –
@VadimKirilchuk «Internet Archive» era giù ... –
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html –
Class (variabili statiche): prima le variabili di classe pubblica, quindi la protetta e quindi la privata.
Variabili di istanza: prima pubblica, quindi protetta, quindi privata.
Costruttori
Metodi: Questi metodi devono essere raggruppate per funzionalità piuttosto che dalla portata o l'accessibilità. Ad esempio, un metodo di classe privata può trovarsi tra due metodi di istanza pubblici. L'obiettivo è di rendere la lettura e la comprensione del codice più semplice.
Fonte: http://www.oracle.com/technetwork/java/codeconventions-141855.html
Questo è 15 anni e probabilmente un po 'obsoleto con l'aspetto dei moderni IDE ... – assylias
@assylias: IMO, la leggibilità è indipendente dall'IDE. Mantenere pubblico prima privato è generalmente migliore. – saurabheights
Inoltre, Eclipse offre la possibilità di ordinare i membri della classe per voi, se li per qualche motivo mischiato:
Aprire il file di classe, il via alla "Fonte "nel menu principale e selezionare" Ordina membri ".
presi da qui: Sorting methods in Eclipse
- 1. Convenzioni di denominazione dei metodi Java per le differenze di tipo e asType?
- 2. Esistono convenzioni di denominazione per ASP .NET MVC 3?
- 3. Esistono convenzioni per scrivere commenti POD per Perl?
- 4. Esistono metodi incorporati in Java per aumentare le dimensioni dei caratteri?
- 5. Risultati cache java dei metodi
- 6. Convenzioni per i nomi dei xib
- 7. generici Java convenzioni di denominazione
- 8. Informazioni sui generici Java. convenzioni dei parametri Tipo
- 9. Convenzioni di denominazione dei delegati iOS: dovrebbe, lo ha fatto,
- 10. Esistono motivi validi per nascondere i metodi statici?
- 11. Convenzioni di codifica dei nomi dei file JavaScript e PHP
- 12. Java convenzioni pacchetto di denominazione
- 13. Sovrascrittura dei metodi privati in Java
- 14. Vararg in overloading dei metodi in Java
- 15. Equivalente dei metodi anonimi C# in Java?
- 16. Esistono gemme che possono imporre le convenzioni del codice Ruby?
- 17. Esiste un idioma in Java per i metodi vuoti che esistono per soddisfare un'interfaccia?
- 18. Esistono convenzioni di denominazione utili per * la * costante/variabile statica in Cocoa?
- 19. Perché esistono metodi di creazione statici?
- 20. Esistono strumenti per integrare Java e C++?
- 21. Verifica statica per convenzioni quadro
- 22. Quali metodi esistono per la chiamata di procedura remota locale?
- 23. Perché esistono metodi ridondanti per importare in Python?
- 24. convenzioni di denominazione dei parametri del percorso URL REST
- 25. Convenzioni di denominazione Python per attributi e metodi che devono essere sovrascritti
- 26. Convenzioni di denominazione per i trigger DB
- 27. Applicare Java 8 convenzioni con Checkstyle
- 28. Convenzioni nome pacchetto Python
- 29. Convenzioni Java per dati accessibili. (Accessors pubblici & Getter/Denominazione)
- 30. Esistono buone pratiche o convenzioni per la struttura del progetto ios
Si noti inoltre che quando _working_ con codice come questo, la maggior parte degli IDE permettono di vedere la definizione di ciò che è sotto il cursore automaticamente. Questo significa che non devi fare altro che un'occhiata. –