2009-09-16 14 views
102

W ostatnich miesiącach zainteresowałem się kodowaniem. Uważam, że to świetny sposób na doskonalenie umiejętności programowania i poprawę jakości kodu, który piszę w pracy.Kodowanie Katas do ćwiczenia refaktoryzacji starszego kodu

Istnieje wiele miejsc, w których można znaleźć Katas. jak ..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Znalazłem je za doskonałe repozytoria KATAS ... moje próby na niektóre z nich zostały już ogromnie satysfakcjonujące.

Jednak czuję, że wszystkie Kata, które widziałem do tej pory, mają jedno krótkie przyjście. Żadne z nich nie pozwala mi praktykować refaktoryzacji złego kodu. Świetnie się nauczysz pisać po raz pierwszy czysty kod ... ale w mojej obecnej pracy nie mam zbyt wielu możliwości napisania nowego kodu. Raczej często walczę z dotychczasowym kodem i próbuję wymyślić, jak refaktoryzować moduły, wyeliminować zależności i zredukować sprzężenie.

W związku z tym szukam pary Katas, której będę mógł użyć, aby udoskonalić dotychczasowy kod i przekształcić go w czysty kod.

Czy ktoś wie o już istniejących? Wiem, że dużo ćwiczę, gdy jestem w pracy ... ale chciałbym doskonalić swoje umiejętności do tego stopnia, że ​​jestem w stanie szybko przekonać się, jak rozdzielić zależności i oddzielne problemy na zajęciach zrobić o wiele za dużo.

+0

+1 miły pytanie, z przydatnymi informacjami pod warunkiem – KLE

+0

Chciałbym dać więcej niż +1 :) Świetne pytanie. Nigdy nie myślałem o tego rodzaju praktyce programowania ... – TJMonk15

+0

Chciałbym zobaczyć, jak ktoś wysyła mały system specjalnie do refaktoryzacji starszego kodu ... coś, co ma części, w których refaktury Michaela Feathersa mogłyby świecić. Szukałem czegoś takiego od ponad tygodnia. ktoś? ktoś? :) –

Odpowiedz

79

nie wiem o miejscu, które katalogi je bezpośrednio, ale jedna strategia, która Użyłem przy okazji jest to:

  1. znaleźć stare, małe, źle utrzymanym projektu open source na SourceForge
  2. Pobierz go, zmusić go do kompilacji/build/run
  3. Przeczytaj dokumentację, poczuć kodu
  4. korzystać z technik w robocze Skutecznie z kodeksem Legacy aby dostać kawałek tego badanego
  5. Refactor że kawałek, może poprawianie błędów i dodanie możliwości drodze
  6. Powtórz kroki od 4 do 6

Po znalezieniu części, które było szczególnie trudne, wyrzucić swoją pracę i powtórzyć go kilka razy, aby wzmocnij swoje umiejętności.

To nie tylko praktyka refaktoryzacji, ale także inne umiejętności, takie jak czytanie kodu, testowanie i radzenie sobie z procesami kompilacji.

Najtrudniejszym problemem jest znalezienie projektu, który jest na tyle interesujący, abyś mógł dalej pracować. Ostatni, nad którym pracowałam, to biblioteka Pythona do programowania genetycznego, a obecnie pracuję nad biblioteką IRC dla Java.

+3

+1 bardzo interesująca sugestia. Tak jak powiedziałeś, trudnym zadaniem jest znalezienie odpowiedniego projektu. Dam to dużo uwagi. Być może, jeśli ja lub inni znajdziemy coś, co jest bardzo użyteczne, może być zapisane i udokumentowane gdzieś jako Kata ... – mezoid

+2

"Radzenie sobie ze Starszym Kodem" - czy masz na myśli "Skuteczną pracę ze Starszym Kodem"? http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 – TrueWill

+0

Tak, mam na myśli "Skuteczne działanie ze starszym kodem". Dzięki za połów! – Ryan

18

Czuję, że nekromanta odpowiada na tak stary wątek, ale jest jedna rzecz, która może się przyczynić do godnego dodania - Legacy Code Retreat.

Pomysł polega na tym, aby mieć starą kod Code Retreat i spróbować przećwiczyć same techniki radzenia sobie z takimi, ale nie widzę niczego, co mogłoby zabronić ci używania samego kodu przygotowanego i ćwiczenia z nim. Używanie go do tworzenia Złotego Mistrza sprawia, że ​​przez godzinę pracy można zrobić o wiele więcej. Jeśli twoje kata trwają zwykle około 2 godzin, powiedziałbym, że dzielenie się, co zwykle dzieje się na LCR, do kata, daje ci cztery różne rzeczy do nadrobienia.

Jest autor GitHub repository autorstwa autora pomysłu, J.B. Rainsberger, który zawiera prosty system, z którym masz pracować, Trivia Game.

Z mojego doświadczenia jako organizatora/uczestnika, ludzie naprawdę to lubili i to było pouczające, aby zobaczyć, co może być problemem w starszym kodzie i gdzie twój refaktoryzacja może sprowadzić cię na manowce (i jak!). Oto jeszcze jeden opis tego, jak to wygląda, przez Andreas Leidig.

15

Emily Bache ma repozytorium github z kilkoma katami refaktoryzacji: Emily Bache's Refactoring Kata Repo. Istnieją warianty KataJahtzee i KataTennisa do refaktoryzacji. Ma też wariant Złotego Katy Róż, który został zaprojektowany jako kata refaktoryzacji.

Ma również Katasę Wyścigów Samochodowych w swoim repo: Racing Car Kata. The Race Car Katas zawierają również dobre ćwiczenia do refaktoryzacji.

Te kata mieć kod w wielu langauages:

  • C++
  • C#
  • Java
  • Javascript
  • Pythona
  • Ruby
+3

Emily opublikowała również książkę The Coding Dojo Handbook, która wymienia Katas i opisuje, jak uruchomić i uruchomić własne dojo kodowania. Gorąco polecam książkę: https://leanpub.com/codingdojohandbook –

+0

Użyłem jej książki, aby uruchomić dojo, i zgadzam się, że jest to doskonały zasób. Emily ma również podobny kurs na pluralsight.com/courses/the-coding-dojo. –