2011-10-27 9 views
8

Quando si tratta di metodi ordine/sequenza nella classe java. Dove ti aspetti/preferisci vedere il metodo main()?Posizione preferibile del metodo main() nel file di classe Java

  • in alto prima di ogni campo (per l'utente lo stress la sua esistenza e la forza lui per usarlo)
  • in basso (per permettere all'utente di vedere i campi prima e dopo che scoprire principale)
  • dopo c -tor
    oppure ....

Per favore condividi i tuoi pensieri, questa è una specie di domanda stilistica/filosofica. Si consiglia di non suggerire di mantenere main() in un file separato.

+2

Perché * non * mantenere il main() nel proprio file? Se non si desidera utilizzare OOP, non utilizzare java ... – bdares

+0

Questo è uno stile gentile per evitare di mescolare l'analisi degli argomenti e qualsiasi tipo di preparazione prima di chiamare "job.doAll()". –

+0

grazie a tutti per le vostre opinioni. Il nostro team ha deciso di mettere il principale al vertice della categoria in quanto è il punto di ingresso per la funzionalità di classe. –

risposta

2

L'ho sempre messo alla fine, perché è così che lo fanno in C. "Tradizione". Quale potrebbe non essere una buona ragione. :-)

+0

Java è basato su C ... è una buona ragione. – Bohemian

3

Sun Microsystems ha pubblicato le Convenzioni di codice per il linguaggio di programmazione Java molti anni fa e molte organizzazioni lo seguono a vari livelli.

In this section suggeriscono di mettere i metodi alla fine di un file. E come sai, main è "solo un altro metodo" anche se un metodo di classe invece di un metodo di istanza.

Mentre nessuno ti obbliga a seguire le convenzioni di Sun, potrebbe esserci un leggero vantaggio nel tenersi relativamente vicino a loro in quanto vi è un certo grado di familiarità con esso. La maggior parte (se non tutte) delle librerie JDK standard la seguiranno.

Questo è IMHO una buona ragione per andare con il metodo-ultimo approccio. Per quanto riguarda il posizionamento di main tra i metodi, il primo o l'ultimo inserimento funzionerebbe. Se lo trovi "speciale" in qualche modo, allora mettilo per ultimo nel file.

7

Questi sono solo i miei pensieri:

principale() è un metodo statico estranei a istanze di oggetti. Sappiamo che esiste come punto di ingresso, che rende eseguibile il nostro programma/classe.

Il fatto è che in Java, tutto (ma le primitive) è un oggetto, quindi main() deve essere dichiarato in qualche classe da qualche parte. Il codice che un tale metodo statico può eseguire riguarda più l'impostazione del programma per l'esecuzione e la delega alla nostra logica aziendale (oggetti che effettivamente fanno qualcosa) per eseguire l'applicazione. Come tale, la sua preoccupazione è distinta dal resto della nostra classe (che definisce alcuni dati e comportamenti che stiamo cercando di incapsulare).

main() non appartiene realmente ai dati e al comportamento delle classi quotidiane, poiché dubito che ogni classe debba essere eseguibile da sola. La preoccupazione principale di() è con l'esecuzione del nostro programma. Come tale, dovrebbe essere dichiarato lontano dai nostri oggetti di business, in un modulo del progetto in questione con l'avvio/l'esecuzione dell'applicazione. Quindi, come potresti indovinare, sto proponendo esattamente quello che hai detto di non suggerire: tieni il più lontano possibile dalle tue classi e dalla tua logica, e solo dichiaralo nel contesto di un punto di accesso alla tua applicazione.

Per quanto riguarda la posizione all'interno di un file stesso, non penso davvero che importi - finché è ovvio che il codice in quel file riguarda la configurazione e l'esecuzione del programma.

+0

grazie, teniamo main() è classi di lanciatori speciali, ma abbiamo un progetto che contiene le classi utils numero che potrebbero essere lanciati da main() - è conveniente. Ma creare classi separate/aggiuntive che configurano e lanciano business class raddoppieranno il numero di classi e renderanno il codice meno facile. Quindi cerchiamo un compromesso per mantenere main() nella stessa classe, ma continuiamo a tenere lezioni facili e capire come lavorare con lui. –

1

Suppongo che non si imposti sistematicamente un metodo main() in ogni classe che si scrive (in questo caso successivo, si deve prevedere di scrivere invece test di unità).

Fintanto che la classe contiene un metodo main(), e quindi il punto di ingresso dell'applicazione, questa classe non dovrebbe avere alcun comportamento diverso dall'inizializzazione dell'applicazione. Questa buona pratica è chiamata "Separazione delle preoccupazioni": una classe = una responsabilità.

Se questo è il caso, non dovresti avere molti metodi nella tua classe. Personalmente scelgo sempre il metodo per importanza: i metodi più importanti/utili/centrali sono soprattutto altri metodi, che non aggiungono alcun vero lavoro (setter e getter sono di quel tipo per me).

In questo modo, il lettore ha accesso alle informazioni più importanti prima.

Ovviamente, la codifica mediante Java Convention, che io consiglio, implica prima dichiarare i campi della classe, prima di dichiarare i metodi.

Problemi correlati