Perché è lì in primo luogo?
Hai controllato il codice instabile nella linea principale? Perché?
Il codice instabile non dovrebbe essere registrato in trunk / main / master o qualunque sia il nome del trunk principale. Questo è considerato uno sviluppo ad alto rischio e dovrebbe invece essere stato sequestrato nel suo ramo su cui hai lavorato piuttosto che controllato in principale.
Incoraggerei fortemente voi (e il vostro responsabile del team) a leggere le strategie di ramificazione avanzate di SCM . In particolare, presta attenzione al ruolo di sviluppo e a ciò che dice su quello che è considerato uno sviluppo ad alto rischio:
In generale, considerare l'utilizzo di filiali separate per ciascun progetto ad alto rischio. I progetti ad alto rischio sono caratterizzati da grandi dimensioni, un gran numero di persone, argomenti non familiari, argomenti altamente tecnici, tempi molto stretti, date di consegna incerte, requisiti incompleti o volatili e team di progetto distribuiti geograficamente. Allo stesso modo, prendere in considerazione la designazione di un singolo ramo per lo sviluppo a basso rischio in ogni versione. Diverse fonti tra cui [WING98] raccomandano di utilizzare la linea principale per questo scopo. Considera i fattori discussi sopra per la linea principale prima di impegnarti in questo corso d'azione. Lo sviluppo a basso rischio può avere una politica diversa dalla linea principale anche se ci sono più membri di una famiglia di prodotti che coordinano attraverso la linea principale.
Consentire alle persone di controllare il codice instabile (o non utilizzato) nella linea principale significa confondere gli sforzi di sviluppo futuri nel tentativo di mantenere questo codice. Ogni ramo e clone del rappresentante da ora fino alla fine dei tempi conterrà questo fino a quando qualcuno dice "il suo codice morto" e lo elimina.
Ci sono alcuni che dicono "beh, se si trova in un ramo viene dimenticato" e mentre ciò può essere vero, aver dimenticato il codice morto (e instabile) nella linea principale è molte volte peggiore in quanto confonde tutto lo sviluppo futuro fino a quando non viene rimosso - e allora è ancora più dimenticato. Una branca ben definita di "/ fooProject / filiali / WeisBigIdea" (o equivalente) è visibile e più facile da lavorare in futuro, specialmente se funziona in qualche modo.
@Deprecated
La prima cosa è l' @Deprecatedannotazione. Questo va oltre il javadoc e sputa gli avvisi del compilatore. javacfornisce un -deprecationflag che è descritto come:
Mostra una descrizione di ogni utilizzo o sostituzione di un membro o di una classe deprecati. Senza -deprecation, javacmostra un riepilogo dei file di origine che utilizzano o sovrascrivono membri o classi deprecati. -deprecation è una scorciatoia per -Xlint:deprecation.
Come notato, questo va oltre le avvertenze standard del compilatore.
In molti IDE, metodi e valori obsoleti sono mostrati con un barrato:
foo.bar();
E produrrebbe output come:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
A seconda della struttura della build, è possibile che gli avvisi interrompano la build. Questo sarebbe solo rompere la build se una delle classi è stato utilizzato (non se è semplicemente compilato).
@CustomAnnotation
Ci sono molti approcci a questo. Ad esempio, l' annotazione Lightweight javac @Warning che fornisce un processore di annotazione che emette un avviso in fase di compilazione quando viene utilizzato qualcosa con tale annotazione ( un tutorial di netbeans su processori di annotazione personalizzati in modo da poter avere un'idea di ciò che sta accadendo dietro scene).
Oracle descrive persino un esempio dell'utilizzo di annotazioni personalizzate per @Unfinishedun'annotazione in Come sfruttare al massimo i metadati di Java, Parte 2: Annotazioni personalizzate .
Con AnnotationProcessor , è possibile eseguire codice arbitrario in fase di compilazione. Sta davvero a te decidere cosa vuoi che faccia. Avvertire, interrompere la build quando viene utilizzato qualcosa. Esistono numerosi tutorial sul Web per sapere come scrivere questo tipo di codice. Se si desidera generare un errore quando viene compilato (questo sarà fastidioso e porterà alla sua eliminazione) o se viene utilizzato (un po 'più complesso da scrivere).
Si noti che tutto ciò implica la modifica delle build per utilizzare effettivamente il processore di annotazione.