W moim obecnym projekcie (gra w C ++) zdecydowałem, że będę używać 100% Test Driven Development podczas programowania.
Pod względem jakości kodu było to świetne. Mój kod nigdy nie był tak dobrze zaprojektowany ani wolny od błędów. Nie wzdrygam się podczas przeglądania kodu, który napisałem rok temu na początku projektu, i zyskałem znacznie lepsze wyczucie, jak ustrukturyzować rzeczy, aby nie tylko łatwiej było je testować, ale także by było prostsze w implementacji i użyciu .
Jednak ... minął rok odkąd zacząłem projekt. To prawda, że mogę nad tym pracować tylko w wolnym czasie, ale TDD wciąż znacznie mnie spowalnia w porównaniu do tego, do czego jestem przyzwyczajony. Czytałem, że wolniejsza prędkość rozwoju z czasem staje się lepsza i zdecydowanie wymyślam testy o wiele łatwiej niż kiedyś, ale pracowałem już od roku i nadal pracuję w tempie ślimaka.
Za każdym razem, gdy myślę o następnym kroku, który wymaga pracy, muszę za każdym razem się zatrzymać i zastanowić się, jak napisać test, aby pozwolić mi napisać właściwy kod. Czasami utknąłem na godziny, wiedząc dokładnie, jaki kod chcę napisać, ale nie wiem, jak go rozbić na tyle dokładnie, aby w pełni pokryć go testami. Innym razem szybko wymyślę tuzin testów i spędzę godzinę na pisaniu testów, aby pokryć niewielki fragment prawdziwego kodu, którego napisanie zajęłoby kilka minut.
Lub po ukończeniu 50. testu obejmującego konkretny byt w grze oraz wszystkie aspekty jego tworzenia i użytkowania, patrzę na moją listę rzeczy do zrobienia i widzę następny byt do zakodowania, i przerażony na myśl o pisaniu kolejne 50 podobnych testów, aby go wdrożyć.
Doszło do tego, że patrząc na postępy z ubiegłego roku, rozważam porzucenie TDD w celu „ukończenia tego cholernego projektu”. Jednak rezygnacja z dostarczonej z nią jakości kodu nie jest czymś, na co czekam. Obawiam się, że jeśli przestanę pisać testy, to wyślizgnę się z nawyku tworzenia kodu tak modułowego i testowalnego.
Czy może robię coś złego, żeby być w tym tak powolnym? Czy istnieją alternatywy, które przyspieszają produktywność bez całkowitej utraty korzyści? BERBEĆ? Mniejszy zasięg testu? Jak inni ludzie przeżywają TDD bez zabijania całej produktywności i motywacji?