Dziś zaczynamy swoją przygodę z Code Kata. Przed wami pierwsze ćwiczenie które będziecie realizować.
Wg. poprzedniej części zajmiemy się ćwiczeniem zarówno TDD jak i pogłębianiem swojej wiedzy, doświadczenia, odkrywania nowych torów naszego umysłu.
Wstęp i Zasady
Aby zacząć realizować zadania należy poznać na początek kilka istotnych zasad które powinny być przestrzegane zawsze:
- Staraj się nie czytać całej treści zadania, chyba że zostało to zaznaczone inaczej
- Najpierw napisz Test wg. specyfikacji zadania. Wystarczy jak napiszesz tylko te które spełniają poprawne wyniki.
- Napisz najbardziej minimalną i najszybszą implementację która spełnia test (Choćby miał być to np. return 1)
- Po każdym spełnieniu testu zrób refactoring kodu
Dzięki tym 4 punktom wyrobicie sobie nawyk pisania Testu a potem implementacji. Jest to związane z koncepcją TDD. Starajcie sobie przeznaczyć na to zadanie do 30 min. Jeśli nie skończycie do końca to nic nie szkodzi. Z czasem będziecie robić to sprawniej.
Dość gadania, czas na trening...
Zadanie
- Utwórz metodę spełniającą pseudo interface:
int add(string numbers)
- Metoda może przyjmować 0, 1, lub 2 cyfry i zwracać ich sumę np:
""
- suma 0 (dla pustego ciągu)"1"
- suma 1"1,2"
- suma 3"4,5"
- suma 9
- Pozwól na wpisanie dowolnej ilości liczb np:
"1,3,5,6,7"
- Pozwól na zastosowanie znaku nowej linii
\n
zamiast przecinka (,
) np:"1\n2,3"
- Pozwól na zastosowanie dowolnego (1) znaku jako separatora liczb:
//[delimiter]\n[liczby]
np://#\n1#2#3
- suma 6- Pierwsza linia z separatorem jest opcjonalna
- Poprzednie warunki powinny być nadal obsługiwane (separator
\n
i,
)
- Wywołanie metody z liczbami ujemnymi powinno wyrzucić wyjątek
Negatives not allowed
. Liczby ujemne powinny zostać wypisane w wyjątku. - Liczby > 1000 powinny być ignorowane, więc:
2 + 1001 = 2
- Pozwolić na wprowadzenie dowolnej długości separatora np:
//[@@]\n2@@3@@4
-suma 9 - Pozwolić na wprowadzenie wielu separatorów np:
//[%][^]\n1%2^3
- suma 6. - Pozwolić na wprowadzenie wielu separatorów dłuższych niż 1 znak
Podsumowanie
Za nami pierwsza Kata i pierwsze zmagania z TDD. Zadanie wydaje mi się dość proste i jasno opisane. Jeśli jednak będą jakieś niejasności to pytajcie w komentarzach a na pewno odpowiem na nie i zamieszczę poprawki w treści.
Zachęcam również do publikowania linków ze swoimi projektami (Testy + Kod). Każdy zapewne będzie miał inną implementację, inne testy a jak wiadomo człowiek uczy się na błędach swoich i innych. Możecie również pisać w innych językach.