Spesso (è successo anche a WPC) mi viene chiesto quale sia l'impatto dell'uso sistematico del Refactoring o della implementazione di test unitari all'interno di un processo di sviluppo. La risposta breve è davvero tale (ossia... Breve): tipicamente infatti "spedisco" qui il richiedente. La generalizzazione (ovviamente non nel senso OO del termine) è però un processo pericoloso: l'ottimo post di Marco rischia infatti di generare nei meno esperti l'errata convinzione che il tempo necessario al refactoring sia "annegabile" poichè composto da tanti piccoli "passi" individualmente sempre poco onerosi. Non so voi, ma per quanto mi riguarda alcuni pattern di refactoring sono tutt'altro che brevi da applicare. Un esempio per tutti: "Extract Interface", il cui utilizzo prevede (cit.):
- Create an empty interface
- Declare the common operations in the interface
- Declare the relevant class(es) as implementing the interface
- Adjust client type declarations to use the interface
Lungi da me l'idea di contestare il Sommo (chi mi conosce sa quale sia l'ammirazione -che alcuni sostengono essere eccessiva- che provo per quest'Uomo), ma secondo me la succitata mechanics richiederebbe la modifica del primo passo in: Define (and name) an empty interface. Ecco: io a volte passo _molto_, _molto_ tempo a riflettere sul nome da attribuire alla nuova interfaccia (che percepisco come fortemente caratterizzante). Potere della semantica... Nomen omen (nel nome il destino): siete d'accordo?
Technorati tags: refactoring
posted @ lunedì 29 novembre 2004 14:37