Stai chiedendo di riscrivere entrambi i reflex e e temo che le risposte siano diverse. Se si esegue costantemente il refactoring, non è necessario essenzialmente riscrivere. Il refactoring, fatto bene, mette il tuo codice in stato ideale per le sue esigenze attuali, senza la riscrittura. Questa è una bella cosa.
vi elenco una serie di ragioni per questo:
- perché la velocità potrebbe essere migliorata;
- perché il codice potrebbe essere facilmente importato in un progetto successivo;
- perché sembra più pulito.
Di questi, vorrei dire scartare n. 1 e n. 2 e attaccare solo con n. Ecco perché. Il refactoring non dovrebbe cambiare il comportamento, quindi il codice refactored dovrebbe funzionare in modo identico all'originale (ci sono alcune avvertenze sui casi limite a questo, ma non considerare mai il refactoring come un approccio di ottimizzazione). Le regole di ottimizzazione sono:
- Do not;
- Vedere la regola n. 1;
- Quando è assolutamente necessario, il profilo , quindi ottimizzare solo i bit lenti.
E l'ottimizzazione è in genere più una questione di riscrittura che di refactoring. Il refactoring può metterti in una posizione migliore per l'ottimizzazione (mi viene in mente un metodo di estrazione), ma in genere non renderà il tuo codice più performante da solo. Quindi non refactoring "per rendere più veloce il tuo codice"; refactoring nel corso di rendere il tuo codice più veloce, perché stai ottimizzando, non per un capriccio.
Riguardo alla riutilizzabilità - YAGNI. Quando il "progetto successivo" arriva - se mai - e sai che c'è qualcosa da prendere in prestito da un progetto precedente, se solo fosse un po 'diverso - è il momento di ridisegnare, per soddisfare le nuove esigenze. Prima che il progetto esista, hai già rifattorizzato il codice del primo progetto per soddisfare idealmente i suoi bisogni (a progetto singolo); solo quando arriva il nuovo bisogno è un altro disegno più desiderabile. Non anticipare. Aspetta la necessità di guidare il tuo design.
Bottom line: refactor per rendere il codice migliore per le sue esigenze immediate. Rendilo leggibile, rendilo manutenibile. Utilizzare il refactoring anche a supporto di altre operazioni, ma non in previsione di esse. E non sentirti male per il refactoring tutto il tempo. Se qualcosa sembra sbagliato nel tuo codice, è bene ripararlo.
fonte
2010-11-10 14:59:01
È una grande abitudine avere quando stai imparando o provando cose. Ma in produzione, come per i prodotti pubblicati, non è una buona idea: http://www.joelonsoftware.com/articles/fog0000000069.html –