TDD Code Kata #2 - Kalkulator Stringu

Łukasz Piotrowski Komentarzy 0

    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:

    1. Staraj się nie czytać całej treści zadania, chyba że zostało to zaznaczone inaczej
    2. Najpierw napisz Test wg. specyfikacji zadania. Wystarczy jak napiszesz tylko te które spełniają poprawne wyniki.
    3. Napisz najbardziej minimalną i najszybszą implementację która spełnia test (Choćby miał być to np. return 1)
    4. 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

    1. Utwórz metodę spełniającą pseudo interface: int add(string numbers)
    2. 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
    3. Pozwól na wpisanie dowolnej ilości liczb np: "1,3,5,6,7"
    4. Pozwól na zastosowanie znaku nowej linii \n zamiast przecinka (,) np: "1\n2,3"
    5. 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 ,)
    6. Wywołanie metody z liczbami ujemnymi powinno wyrzucić wyjątek Negatives not allowed. Liczby ujemne powinny zostać wypisane w wyjątku.
    7. Liczby > 1000 powinny być ignorowane, więc: 2 + 1001 = 2
    8. Pozwolić na wprowadzenie dowolnej długości separatora np: //[@@]\n2@@3@@4 -suma 9
    9. Pozwolić na wprowadzenie wielu separatorów np: //[%][^]\n1%2^3 - suma 6.
    10. 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.

    Inne artykuły

    Top