Wszystkie przykłady, które przeczytałem i widziałem na szkoleniowych filmach, mają uproszczone przykłady. Ale czego nie widzę, jak zrobię „prawdziwy” kod po tym, jak zrobię się zielony. Czy to jest część „Refaktoryzacja”?
Jeśli mam dość skomplikowany obiekt za pomocą złożonej metody i piszę mój test i absolutne minimum, aby go przekazać (po pierwszym niepowodzeniu, czerwony). Kiedy wrócę i napiszę prawdziwy kod? A ile prawdziwego kodu piszę przed ponownym testem? Domyślam się, że ostatnia to więcej intuicji.
Edycja: Dziękujemy wszystkim, którzy odpowiedzieli. Wszystkie twoje odpowiedzi bardzo mi pomogły. Wygląda na to, że istnieją różne pomysły na to, o co pytałem lub o co się myliłem, a może są, ale pytałem o to, powiedz, że mam wniosek o budowę szkoły.
W moim projekcie mam architekturę, od której chcę zacząć, Historie użytkowników itd. Stąd biorę Historie użytkowników i tworzę test, aby przetestować Historię użytkownika. Użytkownik mówi: Mamy osoby zapisujące się do szkoły i płacące opłaty rejestracyjne. Tak więc myślę o tym, jak to zrobić. Robiąc to, projektuję klasę testową dla klasy X (może Student), która zawiedzie. Następnie tworzę klasę „Student”. Może „Szkoła” nie wiem.
Ale w każdym razie Projekt TD zmusza mnie do przemyślenia historii. Jeśli zdołam sprawić, że test się nie powiedzie, wiem, dlaczego się nie powiedzie, ale to zakłada, że mogę go zdać. Chodzi o projektowanie.
Porównuję to do myślenia o rekursji. Rekurencja nie jest trudną koncepcją. Być może trudniej jest zapamiętać to w twojej głowie, ale w rzeczywistości najtrudniejszą częścią jest wiedza, kiedy rekursja „pęka”, kiedy przestać (moim zdaniem, oczywiście). Więc muszę pomyśleć o tym, co się kończy pierwsza rekurencja. Jest to tylko niedoskonała analogia i zakłada, że każda rekurencyjna iteracja jest „zaliczeniem”. Znowu tylko opinia.
We wdrażaniu szkoła jest trudniejsza do zauważenia. Księgi liczbowe i bankowe są „łatwe” w tym sensie, że można użyć prostej arytmetyki. Widzę + b i zwracam 0 itd. W przypadku systemu ludzi muszę się bardziej zastanowić, jak to zaimplementować . Mam pojęcie niepowodzenia, zaliczenia, refaktoryzacji (głównie z powodu studiów i tego pytania).
To, czego nie wiem, opiera się na moim braku doświadczenia. Nie wiem, jak nie udać się zarejestrować nowego studenta. Nie wiem, jak zawieść, gdy ktoś wpisuje nazwisko i jest ono zapisywane w bazie danych. Wiem, jak zrobić +1 dla prostej matematyki, ale z jednostkami takimi jak osoba, nie wiem, czy tylko testuję, aby sprawdzić, czy odzyskam unikalny identyfikator bazy danych lub coś innego, gdy ktoś wpisze nazwę w baza danych lub obie lub żadna.
A może to pokazuje, że wciąż jestem zdezorientowany.