La rimozione di file non necessari da un repository può essere considerata parte del refactoring?

3

Usiamo Git come nostro DVCS e stiamo per iniziare a fare un clean up (mai fatto prima in questo team) di file che non sono necessari (non fanno parte delle fonti) dei nostri prodotti.

Questo avviene in due modi:

  • rimuovendo i file product dal repository e aggiungendoli all'elenco di ignora.
  • eliminazione del codice guasto

Secondo Wikipedia :

Code refactoring is the process of restructuring existing computer code without changing its external behavior. Refactoring improves nonfunctional attributes of the software. Advantages include improved code readability and reduced complexity to improve source code maintainability, and create a more expressive internal architecture or object model to improve extensibility.

e dalla voce di Martin Fowler :

Refactoring is a very specific technique, founded on using small behavior-preserving transformations (themselves called refactorings).

Non ho letto da nessuna parte che la rimozione di codice morto o la rimozione di file dal repository siano considerate tecniche di refactoring, ma le vedo entrambe come tecniche che "migliorano la manutenibilità del codice sorgente" rimuovendo codice irrilevante che potrebbe distrarci più tardi.

Pensi sia ragionevole chiamare queste due attività "Refactoring"?

    
posta pgpb.padilla 28.01.2014 - 20:44
fonte

3 risposte

2

Mi sono dovuto fermare e pensare per un minuto. Questo non è un refactoring tutto da solo, ma sta completando il refactoring o la funzionalità di qualcuno che non è mai stato completato.

Pensa a come le risorse inerti e il codice morto si inseriscono nella base di codice.

  1. È stato aggiunto, ma mai usato. Qualcuno ha iniziato un refactoring o ha iniziato una funzione, ma non ha mai completato quell'attività.

  2. Era un tag con altro codice utile. Qualcuno aveva bisogno di 1 funzione, ma ha aggiunto un'intera directory di codice / risorse solo per ottenere quella funzione.

  3. La nuova logica ha causato l'abbandono delle risorse / codice. È stato eseguito un re-skin, ma le vecchie risorse non sono mai state rimosse. Un refactoring ha causato classi / funzioni non utilizzate, ma il codice non è mai stato rimosso.

In tutti questi casi, se il lavoro è stato completato correttamente, la pulizia sarebbe stata eseguita come parte di tale attività.

Ora devi tornare indietro e finire quei vecchi compiti. Non è refactoring. Sta completando il vecchio lavoro.

    
risposta data 28.01.2014 - 21:10
fonte
2

No, non lo considererei refactoring - in realtà non stai cambiando nulla rimuovendo i file di codice inutilizzati da un progetto, è più un'attività di pulizia. Come dici tu, questi non fanno parte delle fonti.

Tuttavia, la rimozione del codice inutilizzato da un file in cui rimane del codice può essere considerato un refactoring perché si sta modificando il codice base, o la rimozione dei file di codice da un progetto attivo in cui sono stati compilati è un refactoring - la base di codice è cambiata , anche se molto leggermente. Non si sa mai quali pazzi effetti collaterali questo cambiamento potrebbero avere, sia a causa delle dimensioni eseguibili, includono catene, o anche semplice riflessione nell'applicazione che funzionava e non funziona più dopo aver rimosso il codice. Di conseguenza, dovresti tenere traccia delle modifiche come se si trattasse di un vero cambiamento di codice, solo così puoi tornare indietro in seguito e individuare quali modifiche sono state apportate alla tua vecchia applicazione funzionante.

Quindi se nel repository i file veramente inutili non sono realmente utilizzati (e penso a cose come file .obj o altri file non di codice), eliminali prima della migrazione. Se, tuttavia, sono file di codice, aggiungili e poi cancellali dal progetto e dal repository in modo che rimangano solo nella cronologia.

    
risposta data 22.02.2014 - 00:45
fonte
1

Penso che la rimozione del codice morto sia tecnicamente classificata come refactoring, perché si tratta di una trasformazione del codice che non modifica il comportamento funzionale del codice complessivo.

L'aggiunta di file a un elenco ignorato sembra più una trasformazione di metadati di codice che una trasformazione di codice effettiva, quindi non sono sicuro che sarebbe tecnicamente considerato come refactoring.

    
risposta data 22.02.2014 - 00:10
fonte

Leggi altre domande sui tag