View Full Version : [Java] Quando un .java è troppo grande?
D3stroyer
02-12-2008, 01:21
Ciao a tutti, sto sviluppando un'applicazioncina per un progetto di java. In realtà riguarda google webtoolkit..ma alla fine devo scrivere in java (con le funzioni di gwt) e lui converte poi in javascript. Non ho un vero "problema", ma una domanda: sto usando il pattern Model-View-Controller e mi trovo con 8 .java ma come sempre quelli riguardanti la "View" hanno dentro veramente molte linee di codice rispetto alle altre parti. C'è un "tanto", superato il quale bisognerebbe creare una nuova classe? Una delle interfacce implementate contiene in singolo file 1100 linee (ha dentro praticamente tutta l'interfaccia e la gestione della GUI), gli altri si e no 200. È un errore grave appesantire molto alcune parti non spezzandole?
grazie :stordita:
ps. facile notare quanto sia "alle prime armi"..per me 1000 righe sono una cifra considerevole, magari ora mi dite che "fino a 50'000 linee va tutto benissimo" :D. Il punto è: avere un'applicazione sviluppata su 10 files, ma 70% su di uno..non è sbagliato? (chiedo per "bagaglio personale", non avrei comunque la competenza per fare diversamente anche se si potesse).
banryu79
02-12-2008, 09:29
Dal basso della mia piccola esperienza: una classe da 1000 LOC è un buon target da fattorizzare.
C'è per carità da considerare che è una classe visuale, bisognerebbe capire un attimo quanto è complessa la GUI che rappresenta e quindi se può essere divisa in più classi che collaborano per la costruzione dell'interfaccia nel suo complesso (e se conviene farlo).
Però per me in linea di massima 1K LOC in una classe cominciano ad essere tante...
Dipende un po' anche da quali strumenti hai usato. Se hai usato un GUI designer allora anche volendo non la puoi spezzare ;)
fbcyborg
02-12-2008, 11:31
Io purtroppo, usando un GUI designer ho superato anche le 4000 LOC ma mi rendo perfettamente conto che siano tantissime.
In realtà anche per un'altra classe in cui ci sono un sacco di funzioni ho superato quel numero, ma è inevitabile. Per quanto ho potuto ho smembrato diverse parti del codice in classi diverse, ma più di tanto non si può fare. Del resto, per fortuna, l'applicazione gira abbastanza veloce.
D3stroyer
02-12-2008, 13:20
si ho usato un gui designer ed è venuto un monte di linee per una gui molto semplice! Non so davvero come poterlo spezzare quindi ..lo terrò così :/
banryu79
02-12-2008, 14:08
Dipende un po' anche da quali strumenti hai usato. Se hai usato un GUI designer allora anche volendo non la puoi spezzare ;)
Sì, infatti, avevo scordato la doverosa precisazione.
Aggiungo solo una considerazione: io abitualmente lavoro su NetBeans e per le interfaccie grafiche mi appoggio ben volentieri al GUI editor integrato, l'uso del quale in effetti porta a classi con numerose linee di codice.
Però io ormai mi sono abituato a usare una "strategia" di suddivisione: se ho un singolo Frame che deve suddividere la sua area interna in molte "aree logiche" non costruisco tutto nella stessa classe. Faccio una classe per "area logica". Ad esempio un JFrame suddiviso in 4 JPanel: una classe per JPanel. Quei singoli JPanel li costruisco con il GUI builder, ognuno come singolo file.
Il JFrame è a sua volta costruito con il GUI builder, ma al suo interno con un po' di lavoro manuale di editing vado a inserire i JPanel.
Se poi un singolo JPanel di quei 4 fosse troppo complesso (= classe troppo pesante) procederei come sopra per suddividerlo in 2 o più (a seconda del caso) sottocomponenti.
In pratica lavoro con il GUI builder e mi faccio delle integrazioni/personalizzazioni manuali. Di solito basta porre attenzione al fatto che ogni "classe visuale", ad un certo punto durante la sua costruzione chiama il metodo initComponent(). (Sto parlando nel constesto di NetBeans). Quel metodo inizializza tutti i componenti grafici inseriti via GUI Builder con i loro setting, che non possono essere editati direttamente perchè è "codice blindato". Ogni ulteriorie modifica, o anche rimozione di componenti inseriti/inserimento di altri componenti e setting vari va fatta a valla di quella chiamata. Basta questa semplice accortezza.
Io mi sono abituato a fare così e mi trovo bene.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.