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
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.
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.
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
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.
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.
- 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 ...
Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin considera il refactoring.
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:
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 ExamplesDate un'occhiata a RefactorMyCode
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.
E 'un po' datato (2003), ma IBM ha diversi esempi di refactoring (che opera [va?] In Eclipse) a http://www.ibm.com/developerworks/library/os-ecref/
- 1. Buoni esempi di codice Clojure?
- 2. Buoni esempi di MVVM Template
- 3. Buoni esempi all'avanguardia di frecce in azione?
- 4. Dove trovare buoni modelli/esempi di casi di test?
- 5. Dove posso trovare alcuni buoni esempi di interfaccia utente Android?
- 6. Buoni o cattivi esempi di tecnologia Flash/Flex Uso
- 7. Buoni esempi di utilizzo dei finalizzatori in C#
- 8. Buoni esempi di progetti Android coperti da test?
- 9. Buoni esempi di app di marmellata senza gioco?
- 10. Buoni numerici buoni
- 11. setup.py esempi?
- 12. Buoni strumenti per il debug di VerifyError?
- 13. Non è sempre possibile separare queste parole: ascendente e discendente! Ci sono dei buoni esempi?
- 14. Quali sono buoni esempi di librerie client API REST in JavaScript
- 15. Quali siti Web sono disponibili che contengono buoni esempi di progettazione dell'interfaccia utente?
- 16. Buoni esempi di progetti open source .NET (C#) portati su Java? (C# -> Java)
- 17. Dove posso trovare alcuni buoni esempi per imparare le basi del threading?
- 18. Buoni esempi di Winform interfacce utente - da un punto di vista estetico e UX
- 19. AutoFixture refactoring
- 20. Buoni siti che descrivono il pattern MVVM
- 21. esercizi di refactoring in Java
- 22. Strumenti per il codice C refactoring
- 23. Quando si effettua il refactoring del codice?
- 24. Fare JavaDoc robusta contro il refactoring
- 25. Metriche per misurare il refactoring di successo
- 26. Come si effettua il refactoring in Xcode?
- 27. Java Reflection e il dolore nel Refactoring
- 28. Esempi di generici domestici Java
- 29. Buoni tutorial per il framework del gioco awe6?
- 30. Buoni articoli sull'usabilità?
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. –