Che cos'è 'code skew'?

10

Nel libro di O'Reilly su Scala, leggo che il copia-incolla del codice crea:

... creates issues of code-bloat, maintainability and skew,

Non riesco a vedere nessuna definizione ovvia della parola skew nel contesto. Sono consapevole dei problemi di copia-incolla, ma non riesco a farli stare con la parola 'skew'. Dato che questo è usato in un libro di O'Reilly, suppongo che sia un vero e proprio termine di programmazione in circolazione.

Qualche suggerimento?

    
posta Joe 15.02.2013 - 20:43
fonte

2 risposte

19

Inclinazione nella sua definizione più tradizionale significa fuori allineamento (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 l'invio all'altra copia (a causa di incuria o ignoranza). Ora ci sono due versioni di codice esistenti in due posti diversi che sono distorti (non più lo stesso). Questo può portare a strani bug quando il comportamento sembra funzionare in un posto e non nell'altro. Mantieni il tuo codice DRY (non ripeterlo).

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

    
risposta data 15.02.2013 - 20:47
fonte
2

Hai mai giocato a Telefono come un bambino? Sai, quello in cui ogni persona sussurra una frase alla prossima persona in fila e alla fine, l'ultima persona dice la frase ad alta voce e tutti ridono di quanto sia diverso dall'originale? Questo è obliquo. Quando si copia e incolla il codice, si apportano inevitabilmente piccole modifiche in una o più copie. E più spesso copi e incolli lo stesso codice, più le modifiche si accumulano e il codice si allontana dall'originale. Ho visto il codice con centinaia di blocchi copiati e incollati, ognuno dei quali diverso da pochi caratteri, è quasi impossibile da mantenere. Se ti accorgi di voler tagliare e incollare una sezione di codice, dovresti probabilmente considerare di metterlo in una sua funzione.

    
risposta data 17.02.2013 - 03:46
fonte

Leggi altre domande sui tag