Che cos'è "skew di codice"?


11

Nel libro O'Reilly su Scala, ho letto che incollare il codice crea:

... crea problemi di code-bloat, manutenibilità e inclinazione ,

Non riesco a vedere alcuna definizione ovvia della parola distorta nel contesto. Sono consapevole dei problemi del copia e incolla, ma non riesco a adattarli alla parola "inclinazione". Dato che questo è usato in un libro di O'Reilly, immagino sia un vero termine di programmazione in circolazione.

Qualche puntatore?

Risposte:


19

Inclinare nella sua definizione più tradizionale significa disallineamento (non parallelo). Ovviamente quando il codice viene copiato e incollato le due copie sono identiche e parallele. Questo non è un invariante. Le modifiche apportate a una copia non sono garantite per apportare all'altra copia (a causa di negligenza o ignoranza). Ora ci sono due versioni di codice esistenti in due posti diversi che sono inclinate (non più le stesse). Questo può portare a strani bug quando il comportamento sembra funzionare in un posto e non nell'altro. Conserva il codice DRY (non ripeterti).

MODIFICA / AGGIUNTA: Se hai un bisogno di copiare e incollare, molto probabilmente ciò che dovresti fare è sottrarre il codice che stai copiando in una superclasse condivisa (orientata agli oggetti) o una sorta di funzione di utilità inclusa (funzionale).


+1 per una buona spiegazione. Anche per alcune catarsi - devo fare i conti con una base di codice che consiste in centinaia e centinaia di righe di codice copia-incolla con esattamente questo tipo di problema, che deve essere risolto.
KChaloux,

2

Hai mai giocato al gioco Telefono da bambino? Sai, quello in cui ogni persona sussurra una frase alla prossima persona in linea e alla fine, l'ultima persona dice la frase ad alta voce e tutti ridono di quanto è diventata diversa dall'originale? Questo è inclinato. Quando si copia e incolla il codice, inevitabilmente si apportano piccole modifiche in una o più copie. E più spesso copi e incolli lo stesso codice, più le modifiche si accumulano e il codice viene spostato dall'originale. Ho visto codice con centinaia di blocchi di copia e incolla, ognuno diverso dall'altro di pochi caratteri, è quasi impossibile da mantenere. Se ti ritrovi a voler tagliare e incollare una sezione di codice, probabilmente dovresti almeno considerare di metterlo nella sua funzione.


3
Le differenze non sono causate dal copia e incolla. Sono causati da ciò che accade dopo il copia e incolla.
Stephen C,

1
Abbastanza vero, ma se il codice non fosse stato copiato e incollato, le differenze non si sarebbero verificate.
Jim Nutt,

È un buon esempio, ma l'analogia è distorta dal concetto. Nell'analogia, l'incolla crea una copia diversa, mentre nel concetto reale, la copia è la stessa, ma non è sincronizzata, causando quindi l'inclinazione.
Sundeep,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.