06 refactoring

14
REFACTORING Talk 6 1

Upload: federico-russo

Post on 17-May-2015

83 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 06 Refactoring

REFACTORINGTalk 6

���1

Page 2: 06 Refactoring

REFACTORING

L'atto del modificare la struttura interna del codice per renderlo più comprensibile e modificabile, senza alterarne il comportamento osservabile.

���2

Page 3: 06 Refactoring

RE-FUCK-TORING

L'atto del modificare la struttura del codice per piegarla alle proprie intenzioni, rendendolo incomprensibile agli altri, non testabile, non mantenibile e non riutilizzabile.

���3

Page 4: 06 Refactoring

PERCHÉ PERDERE TEMPO IN QUESTO MODO?

• D'altra parte il codice funziona, perché modificarlo?

• Non dà valore aggiunto al prodotto.

���4

Page 5: 06 Refactoring

IL TUO CODICE FA SCHIFO

È leggibile?È mantenibile?

È testabile? È riutilizzabile?

���5

Page 6: 06 Refactoring

È MANTENIBILE?

• Il codice NON è per sempre.

• I requisiti cambiano.

• Le dipendenze cambiano.

• Le prestazioni cambiano.

• Le idee che sembravano buone non lo sono più abbastanza.

• Gli sviluppatori cambiano.���6

Page 7: 06 Refactoring

È LEGGIBILE?

• Tutti sanno scrivere codice comprensibile da un computer, i buoni programmatori scrivono codice comprensibile da un umano.

• Non siete da soli: dovete programmare come se i vostri colleghi fossero violenti psicopatici che sanno dove abitate.

• Il codice è di tutti.

• Il tempo che ci serve per scrivere bene (una volta) è minore di quello che serve per capire codice incomprensibile (tutte le volte che serve).

���7

Page 8: 06 Refactoring

È TESTABILE?

• Il codice deve essere pensato per il testing, come le schede madri.

• Se non è leggibile e bisogna modificarlo, chi garantisce che non vengano inseriti errori?

���8

Page 9: 06 Refactoring

È RIUTILIZZABILE?

• Questa classe può essere usata insieme ad altre per fare un altro lavoro?

• Oppure devo perdere tempo per farne un'altra molto simile?

• Esempio: ho una classe che raddoppia gli interi: devo perdere tempo a fare una classe che triplica. Perché non ho fatto una classe che moltiplica, mannaggia!

���9

Page 10: 06 Refactoring

���10

Page 11: 06 Refactoring

CODE SMELL• Codice duplicato

• Metodo troppo lungo

• Classe troppo grande

• Troppi parametri

• Commenti di che?

• Nomi oscuri

• Dead code

���11

Page 12: 06 Refactoring

OPERAZIONI DI REFACTORING

���12

Page 13: 06 Refactoring

���13

Page 14: 06 Refactoring

http://sourcemaking.com/refactoring

���14