Definisci "Refactoring"

4

Tutti hanno sentito gettare questo termine e la maggior parte della gente, immagino, ha un'idea concettuale del significato. Io, io stesso, sono in quest'ultimo gruppo. Tuttavia, ritengo che la definizione che Google / Wikipedia mi ha fornito non sia eccezionale.

Il refactoring del codice è il processo di ristrutturazione del codice informatico esistente - cambiando il factoring - senza modificare il suo comportamento esterno. Il refactoring migliora gli attributi non funzionali del software.

Credo che mi piacerebbe una definizione tecnica di ciò che è e non è considerato "Refactoring" (non un ). Modifica del codice per migliorare le prestazioni? Migliorare l'estensibilità? C'è quasi sicuramente un'area grigia qui, ma ogni ulteriore chiarezza sarebbe molto apprezzata.

    
posta George Grainger 05.04.2016 - 18:02
fonte

2 risposte

11

Una definizione più lunga può essere trovata nel libro Refactoring di Martin Fowler (pagina xvi).

Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. It is a disciplined way to clean up code that minimizes the chances of introducing bugs. In essence when you refactor you are improving the design of the code after it has been written.

Fowler enfatizza il design e penso che sia ciò che separa il refactoring da altri tipi di modifiche. Migliorare le prestazioni è un cambiamento di codice che non modifica il comportamento, ma in genere lo chiamiamo "ottimizzazione" poiché è più incentrato sull'implementazione che sulla progettazione.

Migliorare l'estensibilità potrebbe essere considerato parte del refactoring, dato il numero di tecniche di refactoring che coinvolgono l'ereditarietà e il polimorfismo.

Non esiste una distinzione netta tra il refactoring e non, e il naming delle cose è difficile.

    
risposta data 05.04.2016 - 18:49
fonte
0

Hai la definizione proprio davanti ai tuoi occhi - non c'è altra definizione. Il refactoring del codice è il processo di ristrutturazione del codice informatico esistente - modifica del factoring - senza modificare il suo comportamento esterno. Refactoring migliora gli attributi non funzionali del software Questo è tutto. Suggerirei anche di sostituire "migliora" con "modifiche".

Qualsiasi cosa che cambi il tuo codice senza cambiare funzionalità è refactoring. A volte capita che il refactoring renda evidenti i difetti nascosti. Ho rifattorizzato un po 'di codice una volta senza cambiare funzionalità, e ho finito con una riga "se (condition1 & & condition2 & & condition3) crash ();" La rimozione di quella riga di codice era refactoring non . E 'stata una correzione di bug.

    
risposta data 05.12.2016 - 20:11
fonte

Leggi altre domande sui tag