Newsgroup: it.comp.java
Titolo: IL Codice, IL  Debug e il Niubbo.Consigli...

Premetto che sono niubbo.
Sto approfondendo diversi aspetti del linguaggio Java ma vorrei un
suggerimento sul modo più pratico di gestire il codice.
Utilizzo NetBeans+ant e per il controllo versione uso svn.
Ultimamente ho aggiunto moltissimi metodi il cui  scopo è raccogliere
informazioni, statistiche per vedere se le cose funzionano come previsto
(è una applicazione di rete).
Questi metodi diventeranno inutili in "produzione"( :-D ).
Vi è un modo di specificare (attraverso annotazioni o simili) che una
porzione del codice deve essere compilata condizionatamente ad una opzione?
Naturalmente non intendo ignorare una classe per intero ma far ignorare
porzioni di codice all'interno di una classe (ad esempio).
Se mi dite cosa cercare o mi date un riferimento mi va benissimo.. non
cerco pappa pronta ma qualche buon consiglio. ;-)
Grazie a tutti
Saluti

Fabiano ha scritto:

Ciao,
no, in Java la compilazione condizionale non esiste. Si può parzialmente 
simulare sfruttando le ottimizzazioni del compilatore, ma non è una 
pratica consigliata.
Da quello che dici mi pare che tu abbia mischiato il codice di test al 
codice da testare. Perchè non estrarlo, mettendolo in classi che fanno 
solo il test? Mi pare che JUnit e simili facciano al caso tuo 
(
www.junit.org
). Ovviamente dovrai strutturare il codice in modo che sia 
testabile (e di solito questa attenzione, lo migliora molto).
Per i test sulle performance, perchè non usare invece un profiler? In 
NetBeans ce n'è già uno piuttosto buono.
Al limite, se proprio pensi che invece quel codice così invasivo ti 
serva proprio, ed è codice sostanzialmente identico di monitoraggio (ad 
esempio, cose che metti all'inizio e alla fine di ogni metodo) potresti 
valutare di utilizzare AOP, ad esempio mediante AspectJ 
(
http://www.eclipse.org/aspectj/
).
Ciao
   Lucio
-- 
Lucio Benfante
JUG Padova           
http://www.parancoe.org
 ...have a look at it!
www.jugpadova.it
 
http://www.jugevents.org

 (
http://www.eclipse.org/aspectj/
).
Grazie per la risposta,
 ho scritto qualche test con JUnit per verificare la consistenza dei
risultati di alcuni metodi che effettuano calcoli, ma il mio scopo è
quello di monitorare il funzionamento durante un uso prolungato per
raccogliere statistiche di vario tipo non relative alla "performance"
dei metodi o alla occupazione di memoria.
 Di fatto devo verificare la correttezza dei miei algoritmi a regime,
cosa che non è possibile in una sola o poche iterazioni dello stesso o
in assenza di una fonte di dati remota (entrano in gioco anche
congestioni della rete e latenze).
 Proverò a rivedere le istruzioni di JUnit per vedere se questa
possibilità mi è sfuggita.
Indagherò riguardo AOP e ApectJ.
Altri consigli sono ben accetti!!
Grazie ancora e saluti

 solo il test? 
Ultima nota, avevo pensato di separare il codice in classi esterne ma
era comunque necessario esporre alcune variabili interne(inizialmente
private di alcuni classi) come pubbliche.
Ci penserò ancora.

 Ci penserò ancora.
usare la riflessione per accedere a quelle variabili? (forse si può
affrontare il problema in altro modo)
-- 
Herbie

 
Come è possibile usare le "reflections" per fare questo? Potresti
gentilmente farmi un esempio.
Da quanto so è una pratica (che usavo nel C) per modificare il codice al
runtime. Come è collegato al problema dello scope delle variabili?

 runtime. Come è collegato al problema dello scope delle variabili?
non ricordo più bene, le avevo solo studiate un po' di tempo fa, mi pare
che oltre a modificare il codice, si possano accedere a classi
altrimenti fuori scope
-- 
Herbie