Codice buggy esistente o uno nuovo di zecca? (Dalla prospettiva temporale)

6

Sto affrontando alcuni problemi con una libreria buggy che attualmente ho ed è usata nel mio progetto attuale, ho bisogno di finire questo progetto il prima possibile per consegnarlo al nostro cliente.

Tuttavia, questa libreria è orribile!

Un sacco di bug, molti errori e cattive prestazioni, ho pensato di scrivere la mia libreria per gestire ciò che gestisce la libreria (GUI / grafica e alcuni dati manipolati), ma mi manca il tempo per farlo.

Ho perso un sacco di tempo a riparare questa libreria, quindi sono molto vicino alla mia scadenza con il completamento dell'85% e ancora molti bug che affronto e risolvo ogni giorno.

Forse mi farai la seguente domanda:

Why did you use it in the first place if you knew it was buggy?

Risponderò a questa domanda, il motivo è perché la libreria con errori è considerata uno standard nella società; Inoltre, non sono l'unico a pensare che la biblioteca sia bacata, quasi tutti gli sviluppatori la odiano!

La mia domanda è: dovrei consegnare il progetto corrente con quella libreria, quindi sviluppare una nuova libreria e usarla per migliorare il progetto dopo che è stata consegnata nuovamente al client come aggiornamento, oppure sviluppare la nuova libreria e riavviare l'intero progetto usando quello nuovo? e perché?

    
posta Aamer 25.07.2012 - 10:41
fonte

3 risposte

5

Come mi è stato detto: "Una soluzione all'80% nel tempo è meglio di una soluzione al 100% troppo tardi". L'avrei finito usando la libreria legacy e consegnato un aggiornamento più tardi. È importante pianificare questo aggiornamento in anticipo, idealmente ora. Come accennato da ElYusubov, Design by Contract è una buona parola chiave. Potresti mantenere l'interfaccia della biblioteca, in questo modo ci sarebbe un cambiamento di tranquillità, anche in altri progetti. Se l'interfaccia stessa è così imperfetta e arrugginita, potrebbe essere utile un Bridge .

    
risposta data 25.07.2012 - 11:17
fonte
3

Prenderò in considerazione la scrittura di una serie di test unitari per la libreria in questione, che esercitano solo la funzionalità di cui si ha bisogno dalla libreria (ma lo fanno completamente), e quindi vediamo se la libreria funziona correttamente solo per ciò di cui hai bisogno o se fai scattare abbastanza bug per renderlo inutilizzabile.

Se non hai ora un set di unittest da cui puoi facilmente creare la tua libreria.

    
risposta data 25.07.2012 - 11:09
fonte
1

Come hai anche accennato, prima riprendi il tuo progetto e prova a consegnare in tempo il prima possibile. Tuttavia , mentre consegna il progetto replace dependencies alla tua cosiddetta "libreria buggy" tramite introduction del Design per contratto principio.

In alcuni termini è chiamato Programmazione con contratti , dove a contract definisce semplicemente i requisiti di una particolare classe; in realtà non controlla l'implementazione della classe. Lo scopo di un contratto è quello di assicurarsi che le specifiche progettuali previste siano soddisfatte e non in conflitto tra loro. In altre parole, un contratto aiuta a identificare i difetti di progettazione.

    
risposta data 25.07.2012 - 10:59
fonte

Leggi altre domande sui tag