2009-07-27 22 views
13

Sto eseguendo un dojo di codice di refactoring per alcuni colleghi che hanno chiesto in che modo il refactoring e gli schemi vanno insieme e ho bisogno di un codice di esempio. Qualcuno sa di un buon punto di partenza che non è orribile che non riescono a fare la testa o il codice del codice, ma possono riscrivere il loro modo di qualcosa di utile?Buoni esempi nell'insegnare il refactoring?

risposta

16

In realtà vorrei suggerire il refactoring del codice di vostro e vostro collega.

Ci sono sempre posti in cui una base di codice esistente può essere rifattorizzata, e la familiarità con il codice esistente contribuirà a farlo sentire più come una cosa utile e meno come un esercizio. Trova qualcosa nel codice della tua azienda da utilizzare come esempio, se possibile.

+1

seguito la risposta di Thorarin: la duplicazione del codice è di solito più evidente obiettivo per il refactoring in modo Suggerirei di cercarlo in primo luogo. –

3

Il primo capitolo di "Refactoring" di Martin Fowler è un buon punto di partenza per il refactoring. Ho capito la maggior parte dei concetti quando uno dei miei insegnanti a scuola ha usato questo esempio.

+0

Grazie. Ho trovato il codice di esempio su http://david.koontz.name/home/Projects/Entries/2008/4/13_Photo_of_the_Day.html tramite http://refactoring.com a causa del tuo suggerimento. Lo guarderò. – Ball

1

Qual è il livello di conoscenza generale dei tuoi colleghi?

Qualcosa di semplice come la duplicazione del codice dovrebbe essere facile da avvolgere. Due pezzi di codice (quasi) identico che possono essere refactored in un metodo riutilizzabile, classe, qualunque sia. Utilizzare un esempio (passato) dalla propria base di codice sarebbe positivo.

0

Si consiglia di sviluppare un progetto di esempio semplice per un requisito specifico.

Quindi si aggiunge un altro requisito e si apportano modifiche alle classi esistenti. Continui a farlo e mostra loro come stai trovando difficile apportare ogni modifica quando il codice non è progettato correttamente. Questo li renderà facilmente realizzabili, questo è ciò che quei ppl faranno nel loro lavoro quotidiano. Fagli capire che, se modelli e principi non vengono seguiti dall'inizio, come finiranno per finire in disordine.

Quando se ne rendono conto, allora si inizia da zero o si rifatta il codice incasinato esistente. Ora aggiungi un requisito e fai capire che è facile apportare una modifica al codice refactored, quindi devi testare solo alcune classi. Un cambiamento non influenzerebbe gli altri e così via.

È possibile utilizzare il computer, la tastiera e la classe della stampante come esempio. Aggiungi requisiti come, vorresti che il computer legga dal mouse, quindi un altro requisito potrebbe essere come se il tuo computer volesse salvarlo sul disco fisso piuttosto che sulla stampa. Infine il codice refactored dovrebbe essere come, la classe del tuo computer dovrebbe dipendere dalla classe di dispositivo di input astratta e dalla classe del dispositivo di output. E la tua classe di tastiera dovrebbe ereditare dalla classe Inputdevice.

0
  • Il refactoring è un requisito non funzionale quando il codice esegue la funzionalità corretta per la quale è stato progettato, ma è difficile eseguire il debug, richiede un maggiore sforzo di manutenzione e un collo di bottiglia delle prestazioni. Il refactoring deve cambiare per essere facilmente manutenibile, buona leggibilità e migliorare l'efficienza.

Quindi dobbiamo concentrarci sui criteri per rendere il codice più leggibile, facile da mantenere.

  • È ovvio che disporre di un metodo/funzione molto grande potrebbe essere difficile da comprendere.
  • La classe dipende da altre centinaia di classi che peggiorano le cose durante il debug.
  • Il codice dovrebbe essere leggibile proprio come leggere un flusso di lavoro.

È inoltre possibile utilizzare strumenti come il sonar che possono aiutare a identificare i criteri critici come "complessità ciclomatica"

http://www.sonarsource.org/managing-cyclomatic-complexity-to-increase-maintainability/

si chiede loro di scrivere codice loro auto e controllare come strumento fa il refactoring . Oltre a questo, è possibile scrivere codice in eclissi e c'è un'opzione disponibile che fa refactoring per voi ... enter image description here

9

Qui ci sono alcuni codici, sia l'originale e la versione riscritta, in modo da poter preparare i kata o semplicemente confrontare i risultati una volta che il refactoring viene eseguita:

  1. miei libri hanno entrambi gli esempi più brevi e una più lunga , in realtà un lungo esempio di libro. Il codice è gratuito da scaricare.
    VB Code Examples
    C# Code Examples

  2. Un nice example da Refactoring Workbook

  3. Date un'occhiata a RefactorMyCode

  4. Ci sono un sacco di esempi su internet di giochi semplici come Tic-Tac-Toe o Snake che hanno molti odori ma sono abbastanza semplici da iniziare con il refactoring.

Problemi correlati