Devo avere due classi identiche in due diverse radici aggregate?

0

Ho un'applicazione che sta modificando alcuni file XML. Due dei file hanno una struttura simile, con logica di business simile che deve essere implementata su di essi.

Mi sono reso conto che ci sono alcuni file identici o quasi identici nei loro domini aggregati dei domini.

I file non sono tipi di valore. Non li vedo cambiare autonomamente, ma potrebbero.

È peggio avere un codice duplicato (non molto, sono piccole classi), o metterli in una directory comune e avere le radici aggregate condividerli?

(Sì, questo progetto è troppo ingegnerizzato, ma mi sto divertendo)

    
posta Steve G 23.12.2018 - 17:37
fonte

1 risposta

3

Definisci identico

Avere una fonte identica o una fonte vicina non lo rende identico al codice.

Sicuramente in questo momento queste due sezioni funzionano in modo simile, hanno definizioni simili, e alcuni controllori taglia / incolla riportano come copie. Questo è solo un odore di codice.

  • Dovrei fare qualcosa a riguardo? Probabilmente.
  • Cosa dovrei fare al riguardo? Fai domande.

Fai domande come:

  • Queste due parti di codice hanno lo stesso scopo?
  • Questi pezzi di codice vivono nello stesso livello di cesoiamento (cambiano allo stesso tempo)?
  • C'è una ragione per cui la parte di codice in un sistema cambierà, e non l'altro pezzo di codice?
  • Il repository del codice sorgente mostra evidenza di modifiche simili?
  • Esiste un limite di velocità / risorse per il funzionamento di un pezzo di codice in cui l'altro non lo è? (es. cellulare o mainframe)
  • I test sono quasi identici?

Se le risposte sono per lo più sono simili allora, sì probabilmente (quasi) codice identico.

Quindi chiedi:

  • Ci sono altre istanze di questa duplicazione?
  • Questo codice è stabile e probabilmente rimarrà tale?
  • Quanto è malleabile il codice attualmente?
  • È ragionevole aggiungere un'altra dipendenza a ciascun progetto?
  • Chi è responsabile della manutenzione di questa nuova libreria?
  • Chi è sottomesso ai capricci di un manutentore esterno?
  • La deduplicazione di questo codice renderà meno leggibile qualsiasi progetto?
  • La deduplicazione di questo codice renderà qualsiasi progetto meno modificabile?

Ci sono altre domande che potresti porre in base al contesto, ma sono utili per iniziare la conversazione.

La conversazione è la parte importante qui. Lo sviluppo di software è uno sport di squadra, in un gioco che termina solo quando il software viene abbandonato. La parte importante è lavorare con quella squadra per migliorare il codice. Anche se sei un unico sviluppatore, il tuo team include anche chiunque scriva un plug-in per il tuo sistema, qualsiasi utente del sistema, amministratore del sistema, ecc ...

Potrebbe non avere senso discutere la deduplicazione del codice con un utente del sistema, ma i loro bisogni modellano ciò che il sistema deve essere e rivelano le forze che agiscono su questo codice "duplicato". Con questa conoscenza puoi vedere le ramificazioni della deduplicazione.

  • Se si esegue la deduplicazione di questo codice, solo per un altro membro del team lo si dividerà di nuovo perché qui deve avvenire una modifica, ma non altrove. Hai creato un ostacolo che ha reso il lavoro fuori dal nulla.
  • D'altra parte, se la deduplicazione di questo codice consente a quell'altro membro del team di correggere facilmente un bug in quell'area. Hai rimosso gli ostacoli a tale lavoro.
risposta data 24.12.2018 - 01:18
fonte

Leggi altre domande sui tag