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.


+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.


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 .


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.