È meglio provare a implementare codice incompleto o scrivere il tuo?

6

La nostra applicazione è un'applicazione legacy di 6 anni fatta da appaltatori esterni. Occasionalmente ci imbattiamo nello scheletro di qualcosa che hanno messo insieme ma mai implementato, e ci fa inciampare mentre proviamo a capire come viene utilizzato nell'app.

Una di queste classi sembra che potrebbe essere vicina a ciò di cui ho bisogno per un certo cambiamento su cui ho lavorato, ma mancano molte parti dell'implementazione e non è chiaro in che modo intende connettersi ad altre parti della app - nel frattempo, ci sono diverse parti funzionali che posso facilmente estrarre e mettere insieme per creare tutte le nuove classi per lo scopo che sto cercando, e avrebbe un nome più preciso e essere riutilizzabile più avanti nello sviluppo di app.

Ma so anche che è considerato "best practice" riutilizzare il codice ogni volta che è possibile, e non voglio essere responsabile di mettere insieme qualcosa di completamente nuovo quando qualcos'altro è seduto lì, in attesa di essere usato.

Ho passato circa mezza giornata a provare a implementare il vecchio codice, e sto iniziando a pensare che lo scheletro sia così incompleto che sarebbe stato più semplice mettere insieme una nuova metodologia per conto mio.

Quindi, il corto della domanda è: di fronte a un problema in cui una soluzione è presente ma incompleta, è meglio implementare il vecchio codice incompleto o scriverne uno tuo?

    
posta Zibbobz 13.05.2016 - 21:21
fonte

3 risposte

13

Riutilizzare il codice non significa resuscitare il vecchio codice inutilizzato e abbandonato e metterlo in uso. Riutilizzare il codice significa fare in modo che lo stesso codice soddisfi più scopi (forse all'interno dello stesso progetto) fornendo un'astrazione utile che può essere (ri) applicata in altri contesti.

Il vecchio codice abbandonato può essere consultato, ma probabilmente non dovrebbe essere riesumato. Dovrebbe essere guardato con sospetto, per quanto riguarda la statura (relativa ai cambiamenti di progettazione all'interno del codice attuale) e ovviamente non essere testata.

La maggiore spesa per lo sviluppo non è necessariamente quella di scrivere le righe di codice, ma sapere quale codice scrivere (per rispondere alle esigenze attuali). Il vecchio codice inutilizzato e abbandonato probabilmente non ti mostrerà questo, a meno che per qualche motivo non sia esattamente quello di cui avevi bisogno.

Quindi, penso che tu stia meglio scrivendo le tue nuove funzionalità come nuovo codice, anche se dovresti refactor in uso il codice esistente (non il vecchio codice inutilizzato) come necessario per creare astrazioni più universalmente applicabili per rendere più semplice l'aggiunta di nuove funzionalità .

    
risposta data 13.05.2016 - 21:32
fonte
2

Condividerò con voi il punto di vista che un architetto della mia azienda ha condiviso con me.

Se il costo (in tempo) di rivedere il codice, per capire cosa fa, per testarlo, per risolverlo (nel tuo caso per completarlo) e per integrare è più costoso che farlo da scratch, quindi inizia da zero

Come indicato da Erik, non dovresti aver fiducia nel codice che (come hai detto) non ti fa sentire abbastanza constrongvole o sicuro.

Se si guarda il codice, potrebbe sembrare riutilizzabile. Può essere parte di esso. Ma guardalo con prospettiva. La soluzione globale si adatta ai tuoi requisiti? È la soluzione (half-coded) riutilizzabile ?

Un buon codice progettato spesso offre una soluzione riutilizzabile per lo stesso problema.

Tuttavia, il codice su misura, nelle condizioni che hai esposto è più vicino a essere rifiutato che a essere riutilizzato o risuscitato come ha detto Erik.

Ciò non significa che non puoi prendere idee da ciò che è stato fatto. Qui li chiamiamo idee prese in prestito . Puoi seguire la stessa strategia nel tuo codice, rendendolo adatto alle tue esigenze, piuttosto che manipolare qualcosa che l'obiettivo non è chiaro.

    
risposta data 13.05.2016 - 21:56
fonte
1

Non riutilizzi il codice quando possibile . Riutilizzi il codice quando riutilizzare il codice è più vantaggioso per te che scrivere un nuovo codice.

Sembra che il modo più efficiente per gestirlo sia progettare tutto correttamente, specialmente se pensi di aver bisogno di codice eseguendo molte cose molto simili ma non identiche, e poi quando implementi il codice, pulisci ciò che puoi e ciò che è ne vale la pena dalla carcassa del codice esistente.

    
risposta data 13.05.2016 - 21:59
fonte

Leggi altre domande sui tag