Il "Cut and paste code" (codice "copia ed incolla" o anche "sviluppo copia ed incolla") è una problematica legata alla pessima abitudine (sempre più frequente) di alcuni sviluppatori di
utilizzare il famigerato copia ed incolla, riferito a frammenti di codice. Un'affermazione tipica di chi sta per incorre in questo antipattern è: "Il risparmiare tempo può solo giovare al progetto".
Contesto
È impossibile negare l'utilità del "copia ed incolla", ci permette di velocizzare numerose operazioni, è
semplice ed immediato da eseguire. Anche se questa pratica non sembra nascondere lati negativi, utilizzarla in modo eccessivo ed inappropriato può causare notevoli danni, soprattutto in ambito implementativo.
Troppo spesso infatti si predilige la produzione di grandi quantità di codice a discapito della qualità, che combinato ad una scarsa conoscenza delle corrette tecniche per il riutilizzo del codice, porta, inevitabilmente, ad un suo rapido degrado.
L'esperienza insegna che la soluzione più semplice e veloce non sempre si mostra la più efficiente. Se a tutto questo aggiungiamo una certa forma di "pigrizia" di alcuni programmatori, nello scrivere codice e applicare tecniche di riuso, possiamo facilmente comprendere come questo antipattern sia particolarmente insidioso e frequente.
L'antipattern "cut and paste code" è legato ad un uso indiscriminato della funzione copia e incolla in relazione allo sviluppo di codice.
Cause
Le cause alla base di questo antipattern sono:
- Sviluppare componenti riusabili necessita di tempo e conoscenze precise, il copia ed incolla invece è una soluzione "banale" ma semplice e veloce, e spesso la si preferisce
- Non si fanno riflessioni sulle possibili implicazioni negative
- La scrittura del codice, vista come quantità di istruzioni prodotte, ha la priorità sulla qualità finale
- Non si posseggono le giuste conoscenze di astrazione: ereditarietà e composizione
- La cattiva abitudine del "copia ed incolla" è talmente radicata da essere diventato un vero e proprio "stile" di programmazione
Sintomi
Gli elementi che permettono d'individuare questo antipattern sono:
- Eccessivi costi in fase di manutenzione
- Lo stesso bug continua a manifestarsi in più classi nonostante le correzioni apportate
- La fase di correzione degli errori risulta particolarmente complessa
Conseguenze
Le conseguenze di tale antipattern sono:
- Difficoltà nel riuso del codice
- Propagazione incontrollata degli errori
- Aumento esponenziale dei costi relativi alla correzione degli errori
- Inutile spreco di risorse
Soluzione
Per evitare d'incorrere in questo antipattern si possono adottare degli accorgimenti:
- Etichettare immediatamente (in modo chiaro e inequivocabile) la metodologia del "cloning" come cattiva pratica di programmazione
- Sviluppare adeguatamente un set di componenti riusabili
- Verificare sempre la possibilità di riutilizzare codice già prodotto (attraverso metodi appropriati)