Kodowanie Katas do ćwiczenia refaktoryzacji starszego kodu

123

W ostatnich miesiącach zainteresowałem się kodowaniem kata. Uważam, że to świetny sposób na doskonalenie umiejętności programistycznych i poprawę jakości kodu, który piszę w pracy.

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Okazało się, że są to doskonałe repozytoria Katas ... moje próby uzyskania niektórych z nich były niezwykle satysfakcjonujące.

Jednak czuję, że wszystkie Kata, które widziałem do tej pory, mają jedno krótkie nadejście. Żaden z nich nie pozwala mi ćwiczyć refaktoryzacji złego kodu. To świetna nauka pisania czystego kodu za pierwszym razem ... ale w mojej obecnej pracy nie mam zbyt wielu okazji do pisania nowego kodu. Raczej często walczę ze starszym kodem i próbuję dowiedzieć się, jak refaktoryzować moduły, eliminować zależności i redukować sprzężenia.

W związku z tym szukam kilku Katas, których mogę użyć, aby doskonalić swoje umiejętności refaktoryzacji starego kodu i przekształcania go w czysty kod.

Czy ktoś wie o czymś, co już istnieje? Wiem, że mam w tym dużo praktyki, gdy jestem w pracy ... ale chciałbym doskonalić swoje umiejętności do tego stopnia, że ​​jestem w stanie szybko zobaczyć, jak rozdzielić zależności i rozdzielić obawy na zajęciach, które zbyt wiele.

mezoid
źródło
+1 miłe pytanie, z przydatnymi informacjami
KLE
Chciałabym dać więcej niż +1 :) Świetne pytanie. Nigdy nawet nie myślałem o tego rodzaju praktyce programowania ...
FallenAvatar
Bardzo bym chciał zobaczyć, jak ktoś faktycznie opublikuje mały system specjalnie do refaktoryzacji starszego kodu ... coś, co ma części, w których refaktoryzacje Michaela Feathersa błyszczałyby. Szukałem czegoś takiego od ponad tygodnia. ktoś? ktoś? :)
Derick Bailey
Fajne pytanie. Możesz poćwiczyć to, o czym @Ryan wspomniał w swojej odpowiedzi. Sugeruję rozwidlenie repozytorium giithub: github.com/garora/TDD-Katas Możesz przejść do historii i sprawdzić, jak te Katas są refaktoryzowane.
Gaurav Aroraa

Odpowiedzi:

92

Nie znam witryny, która bezpośrednio je kataloguje, ale jedna ze strategii, z której czasami korzystam, jest taka:

  1. Znajdź stary, mały, nieobsługiwany projekt open source na sourceforge
  2. Pobierz go i uruchom, aby skompilować / zbudować / uruchomić
  3. Przeczytaj dokumentację, poczuj kod
  4. Skorzystaj z technik opisanych w artykule Efektywna praca z dotychczasowym kodem, aby przetestować jego fragment
  5. Przebuduj ten element, być może naprawiając błędy i dodając funkcje po drodze
  6. Powtórz kroki od 4 do 6

Kiedy znajdziesz część, która była szczególnie trudna, wyrzuć swoją pracę i powtórz ją kilka razy, aby wzmocnić swoje umiejętności.

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

Najtrudniejszym problemem jest znalezienie projektu, który interesuje Cię na tyle, aby kontynuować pracę. Ostatnim, nad którym pracowałem, była biblioteka Pythona do programowania genetycznego, a obecna, nad którą pracuję, to biblioteka IRC dla Javy.

Ryan
źródło
4
+1 bardzo interesująca sugestia. Jak powiedziałeś, najtrudniejsze jest znalezienie odpowiedniego projektu. Poświęcę temu dużo uwagi. Być może jeśli ja lub inni znajdę takie, które są bardzo przydatne, można je zapisać i udokumentować gdzieś jako Kata ...
mezoid
3
„Radzenie sobie ze starszym kodem” - czy masz na myśli „efektywną pracę z dotychczasowym kodem”? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/ ...
TrueWill
1
Tak, mam na myśli „Efektywna praca ze starszym kodem”. Dzięki za połów!
Ryan
21

Czuję się jak nekromanta odpowiadający na tak stary wątek, ale jest jedna rzecz, która mogłaby być godnym dodatkiem - Legacy Code Retreat .

Pomysł polega na tym, aby mieć Code Retreat ze starszym kodem i spróbować przećwiczyć te same techniki radzenia sobie z takim kodem, ale nie widzę niczego, co zabraniałoby ci po prostu używać przygotowanego kodu i ćwiczyć go samodzielnie. Samo użycie go do stworzenia Złotego Mistrza wymaga godziny pracy, a możesz zrobić o wiele więcej. Jeśli twoje kata zwykle trwa około 2 godzin, powiedziałbym, że podzielenie tego, co zwykle dzieje się na LCR, na kata daje cztery różne rzeczy do pracy.

Jest repozytorium GitHub autorstwa autora pomysłu, JB Rainsbergera, które zawiera prosty, starszy system, z którym masz pracować, Trivia Game.

Z mojego doświadczenia jako organizatora / uczestnika wynika, że ​​ludziom bardzo się to podobało i było to pouczające, aby zobaczyć, co może być problemem w starym kodzie i gdzie refaktoryzacja może was sprowadzić na manowce (i jak!). Oto kolejna relacja, jak to wygląda, autorstwa Andreasa Leidiga .

LAFK mówi Przywróć Monikę
źródło
20

Emily Bache ma repozytorium github z kilkoma refaktoryzującymi katami: Refactoring Kata Repo Emily Bache . Istnieją warianty KataYahtzee i KataTennis do refaktoryzacji. Ma również wariant Kata pozłacanej róży, który został zaprojektowany jako refaktoryzujące kata.

Ponadto ma w swoim repozytorium wyścigi samochodowe Katas: Racing Car Kata . Race Car Katas zawiera również dobre ćwiczenia do refaktoryzacji.

Te kata mają kod w wielu językach:

  • C ++
  • DO#
  • Jawa
  • Javascript
  • Pyton
  • Rubin
Steve Clanton
źródło
4
Emily opublikowała także książkę The Coding Dojo Handbook, która zawiera listę Katas i opisuje, jak uruchomić i prowadzić własne dojo kodowania. Bardzo polecam książkę: leanpub.com/codingdojohandbook
Christian Maslen
1
Używałem jej książki do prowadzenia dojo i zgadzam się, że jest to doskonałe źródło informacji. Emily również prowadzi pokrewny kurs na pluralsight.com/courses/the-coding-dojo.
Steve Clanton