Domanda

Sto lavorando su un progetto che viene utilizzato da un numero di persone che non conosco. Abbiamo fatto un lavoro abbastanza buono di abbattere gli avvertimenti Checkstyle e la cosa è di circa un basso come la sua intenzione di ottenere senza rompere la compatibilità binaria.

La maggior parte delle restanti avvertimenti sono causati da costanti (public static finale) manca la parola finale. La denominazione delle costanti rende chiaro che lo sviluppatore li deve essere letto soltanto, ma semplicemente non ha avuto finali quali sono definiti su di loro.

A meno che uno sviluppatore stava scrivendo un codice abbastanza terribile che ha fatto uso di questa svista, il loro codice non si romperà se li aggiungiamo.

Al momento il numero di versione è 1.2.1. Volete applicare la modifica e andare a 2,0, o applicarla e stendetela come 1.3. Sembra una bella piccola modifica per richiedere una piena 2.0.

Che cosa devo fare?

È stato utile?

Soluzione

Sono sicuro che già lo sanno, ma ho il sospetto che deve scendere a "è presente una cassetta di sicurezza / semplice / no-preoccuparsi" aggiornamento?

  • stampa Point sono considerati sicuri e di routine. Essi dovrebbero consistere interamente di correzioni di bug in alcuni progetti. Altri progetti includono nuove funzionalità se è improbabile che possano causare problemi.
  • Le nuove versioni principali di versione contengono cambiamenti evolutivi che possono richiedere l'adattamento
  • Nuovo importante x.0 Versione stampa sono considerati altamente sospetto dagli utenti sofisticati: -)

Credo che dipende anche da quanto sei vicino alla prossima major release di versione. Se è presto, non rischiare un rilascio punto problematico. Si può sempre fare un punto di sgancio di sicurezza e una release alpha, ma questo potrebbe essere strano se la prossima major release era fuori in futuro ...

Altri suggerimenti

A mio parere, le modifiche di questo tipo, che potrebbe rompere la compatibilità binaria dovrebbe essere tenuto fuori fino a quando viene rilasciata una versione principale. Cioè, la tua domanda non dovrebbe essere "Che numero la versione da utilizzare", ma piuttosto "quando devo fare questi cambiamenti".

Se sono totalmente impegnati compatibilità binaria, si dovrebbe mettere fuori questi cambiamenti fino a quando una versione che contiene significativi miglioramenti che giustificano il costo degli aggiornamenti. Ad esempio, il progetto KDE impone un requisito di compatibilità binaria su versioni principali. Ciò significa che eventuali miglioramenti rispetto alla durata di tale rilascio non può rompere applicazioni compilate con le versioni più vecchie. Così gli sviluppatori che desiderano ripulire il codice deve attendere fino alla prossima versione principale.

Una volta che siete pronti a rilasciare una major release con tutte le sue spiffy nuove funzionalità, andare avanti e fare tutto ciò che la compatibilità binaria modifiche che credete siano necessarie, e in tal caso, se qualcosa si rompe non è così sorprendente.

Se si voleva essere intelligente si potrebbe implementare un pre-processore e compilare il codice per due volte, una volta con le finali e una volta senza. Questo potrebbe essere utilizzato come un passo di veri finale ma il costo di manutenzione sarebbe elevata nel frattempo.

Io dico romperli. Se sei un mutando statica allora dovete sapere che si sta facendo male. Tuttavia, si potrebbe desiderare di separarlo in una versione diversa, in modo che i clienti hanno la possibilità (se si prendono o no) per l'aggiornamento senza problemi, piuttosto che in preda al panico perché hanno bisogno di qualche altra correzione non collegati.

  

A meno che uno sviluppatore stava scrivendo un codice abbastanza terribile che ha fatto uso di questa svista, il loro codice non si rompe se li aggiungiamo.

Come creare sottoclassi delle classi precedentemente non definitive che non sarà più lavoro?

Credo che dovrebbe essere 2.0 e che si dovrebbe essere tenuta sostegno alla serie 1.x

Inoltre ecco un video interessante su API: " Come progettare una buona API e perché è importante " di Joshua Bloch creatore librerie in modo di base in Java e ora al lavoro per Google

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top