Domanda

Mi sono interessato al codice kata negli ultimi mesi. Credo che siano un ottimo modo per affinare le mie capacità di programmazione e migliorare la qualità del codice che scrivo sul lavoro.

Esistono numerosi luoghi in cui è possibile trovare Katas. come ..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Ho trovato questi ottimi archivi di Katas ... i miei tentativi in ??alcuni di essi sono stati immensamente gratificanti.

Tuttavia, ritengo che tutti i Kata che ho visto finora abbiano una breve venuta. Nessuno di loro sembra permettermi di esercitarmi nel refactoring di codici errati. È fantastico imparare a scrivere codice pulito la prima volta ... ma nel mio lavoro attuale, non ho troppe opportunità di scrivere nuovo codice. Piuttosto sto spesso combattendo contro il codice legacy e provando a capire come riformattare i moduli, eliminare le dipendenze e ridurre l'accoppiamento.

In quanto tale, sono alla ricerca di un paio di Katas che posso usare per affinare le mie capacità di refactoring del codice legacy e trasformarlo in codice pulito.

Qualcuno sa di quelli già esistenti? So di fare molta pratica mentre sono al lavoro ... ma mi piacerebbe affinare le mie capacità al punto da poter vedere rapidamente come spezzare le dipendenze e separare le preoccupazioni in classi che fare troppo.

È stato utile?

Soluzione

Non conosco un sito che li cataloghi direttamente, ma una strategia che ho usato occasionalmente è questa:

  1. Trova un progetto open source vecchio, piccolo, non mantenuto su sourceforge
  2. Scaricalo, fallo compilare / compilare / eseguire
  3. Leggi la documentazione, fatti un'idea del codice
  4. Usa le tecniche in Lavorare efficacemente con il codice legacy per metterne alla prova un pezzo
  5. Rifattorizza quel pezzo, forse correggendo i bug e aggiungendo funzionalità lungo la strada
  6. Ripeti i passaggi da 4 a 6

Quando trovi una parte particolarmente impegnativa, butta via il tuo lavoro e ripeterlo un paio di volte per rafforzare le tue abilità.

Questo non solo pratica il refactoring, ma altre abilità come la lettura del codice, il test e la gestione dei processi di compilazione.

Il problema più difficile è trovare un progetto a cui sei abbastanza interessato da continuare a lavorare. L'ultimo a cui ho lavorato era una libreria Python per la programmazione genetica, e quello attuale a cui sto lavorando è una libreria IRC per Java.

Altri suggerimenti

Sento che il negromante risponde a un thread così vecchio, ma c'è una cosa che farebbe una degna aggiunta: Retreat Code Retreat .

L'idea è di avere un ritiro di codice con codice legacy e provare a mettere in pratica le tecniche stesse per gestirli, ma non riesco a vedere qualsiasi cosa che ti proibisca di usare semplicemente il codice preparato e di esercitarti da solo. Basta usarlo per creare un Golden Master per un'ora di lavoro, e c'è molto altro che puoi fare. Se il tuo kata di solito dura circa 2 ore, direi semplicemente dividendo ciò che di solito accade su LCR in kata ti dà quattro cose diverse su cui lavorare.

Esiste un repository GitHub dell'autore dell'idea, JB Rainsberger, che contiene un semplice sistema legacy con cui lavorare, Trivia Gioco.

Dalla mia esperienza come organizzatore / partecipante, alla gente è piaciuto molto ed è stato illuminante vedere cosa può essere un problema in un codice legacy e dove il tuo refactoring può portarti fuori strada (e come!). Ecco ancora un altro resoconto di come appare, di Andreas Leidig .

Emily Bache ha un repository github con alcuni kata di refactoring: Kact Repo di refactoring di Emily Bache . Esistono varianti di KataYahtzee e KataTennis per il refactoring. Inoltre, ha una variante del Kata rosa dorato, che è stato progettato come un kata refactoring.

Inoltre, nel suo repository ha i Katas Racing Car: Racing Car Kata . I Race Car Katas includono anche buoni esercizi per il refactoring.

Quei kata hanno il codice in più lingue:

  • C ++
  • C #
  • Java
  • JavaScript
  • Python
  • Rubino
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top