Domanda

Mi interessa quello che la gente strategie hanno escogitato per separare tutta la logica crufty che è necessario per mantenere la compatibilità dal codice principale di un'applicazione. In altre parole, le strategie che consentono di arrivare più vicino ad avere il vostro look codice come se non ci fossero problemi di compatibilità all'indietro, ad eccezione per i file sorgente isolati separati distintamente per questo compito.

Ad esempio, se l'applicazione legge un particolare formato di file, invece di una sola funzione di file di clacson parsing gigante, si potrebbe avere il vostro codice prima un'iterazione una lista di "stranezze" voci / oggetti, dove ogni capriccio controlla il file per vedere se si tratta di un file che si applicherebbe a, e se è così invoca una propria logica di analisi al posto della logica caso normale.

Quirks è una strategia di OK, ma si deve fare il lavoro per mettere i ganci dentro per capricci controlli a tutti i punti appropriati vostra applicazione, e quali sono le verifiche sarà simile variano per i diversi tipi Quirk, ecc Sembra quasi ci dovrebbe essere librerie dedicate al testo standard per questo compito. Un altro problema è come far rispettare che stranezze non si abusi come ganci di uso generale in blocchi arbitrari delle app.

È stato utile?

Soluzione

La mia solita strategia è quella di avere qualcosa di separato che tradurrà l'ingresso compatibilità all'indietro nel nuovo ingresso implementazione, e quindi utilizzare il nuovo codice di implementazione con questi dati tradotti.

Altri suggerimenti

Ciò dipende dal lasso di tempo fino a quando il ritiro di detto all'indietro caratteristiche di compatibilità. E tu sei abbastanza sicuro che in un paio di mesi si sta andando a rilasciare un'altra versione del software che non dovranno più avere quelle stranezze, si può solo mantenere il vecchio codice in giro se siete abbastanza disciplinato da rimuovere in realtà tutto il cruft nel prossimo ciclo di sviluppo. Sto mantenendo due componenti del server backend separati dove lavoro e anche se non possono essere aggiornati allo stesso tempo, di solito posso essere entro un paio di settimane l'uno dall'altro. Ciò significa che la comunicazione tra loro deve essere compatibile, ma solo una singola versione indietro, e in ogni versione che può rimuovere il vecchio codice che ho lasciato per ragioni di compatibilità all'indietro nella versione precedente.

Se, tuttavia, il livello di compatibilità è lì di rimanere per un lungo periodo o anche a tempo indeterminato (si pensi formati di file binari di Word) cercherei di refactoring del codice in modo tale che la nuova funzionalità e la vecchia funzionalità sono a parità di condizioni dentro. Credo che sia il vecchio formato (o di comportamento) e il nuovo formato fanno parte dei requisiti del sistema e non c'è alcun motivo per il vecchio formato di essere un cittadino di seconda classe in esso (oltre ad essere vecchio che sia, gioco di parole).

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