Testowanie i Jakość Oprogramowania

L#06: Code Smells.

Wprowadzenie

Code Smell to termin używany w programowaniu do opisywania pewnych cech kodu źródłowego, które wskazują na potencjalne problemy z jego jakością. Niekoniecznie oznaczają one błędy, ale często prowadzą do trudniejszego utrzymania kodu.

Cel

Głównym celem laboratorium jest identyfikacja najczęstszych "zapachów" kodu (ang. Code Smells) oraz nauka ich eliminowania poprzez odpowiednią refaktoryzację struktury kodu.

Rozrosty

Zbędne elementy

Łatwe do wykrycia powiązania

Nadużycia

Zadanie rekrutacyjne

Wykorzystaj dotychczas zdobytą wiedzę i postaraj się rozwiązać problem. Napisz testy oraz zaimplementuj rozwiązanie.

Proszę zaimplementować program, który będzie odpowiedzialny za wyszukiwanie zbiorów liczb powtarzających się elementów o ściśle określonym rozmiarze. Dla podanego zbioru liczb (lista elementów o dowolnej długości) użytkownik powinien przekazać również rozmiar wyszukiwanych zbiorów. Funkcja powinna zwracać listę składającą się z pojedynczych elementów reprezentujących wyszukiwane zbiory.

PARAMETRY FUNKCJI LOTTERY EFEKT DZIAŁANIA REZULTAT
[1, 1, 3, 2, 2, 2, 4, 5], 2 [1, 1, 3, 2, 2, 2, 4, 5] [1]
[1, 1, 2, 2, 2, 3, 4, 5], 3 [1, 1, 2, 2, 2, 3, 4, 5] [2]
[1, 2, 2, 2, 3, 4, 5, 5, 1], 2 [1, 2, 2, 2, 3, 4, 5, 5, 1] [1, 5]
None, 1 [] []
[1, 2, 3], None [] []
None, None [] []
[1, 1, 2, 2, 2, 3, 4, 5], 7 [] []

Realne zadanie rekrutacyjne do firmy schibsted.

Pojazd księżycowy

Jako inżynier firmy NASA zostałeś poproszony o zaprojektowanie, przetestowanie oraz implementację ruchu pojazdu księżycowego. Musisz być świadomy ograniczeń, które zostały uwzględnione w specyfikacji technicznej.

space vehicle

Specyfikacja techniczna pojazdu księżycowego:

PRZESTRZEŃ PRACY ZACHOWANIE W PRZESTRZENI 2D
Jazda do przodu. Możliwa o dowolną liczbę pól.
Jazda do tyłu. Możliwa o dowolną liczbę pól.
Skręt w lewo. Brak tradycyjnego mechanizmu skrętu.
Skręt w prawo Brak tradycyjnego mechanizmu skrętu.
Rotacja / obrót wokół własnej osi. Możliwy. Ruch oznacza obrót o 90° w lewo lub w prawo.
Punkt startu. Punkt początkowy. Punkt odniesienia pojazdu.
Odczyt lokalizacji. Pojazd zwraca współrzędne X i Y obszaru, w którym się znajduje.

Bardzo proszę zaproponować interfejs pojazdu księżycowego dostosowany do specyfikacji technicznej. Proszę zaimplementować mechanizm poruszania się pojazdu księżycowego. Zachowanie pojazdu powinno być dobrze przetestowane przy pomocy modułu unittest.

Podsumowanie

Umiejętność rozpoznawania i naprawiania Code Smells jest niezbędna przy tworzeniu łatwego w utrzymaniu oprogramowania. Zrozumienie opisanych w laboratorium złych praktyk i ich świadome unikanie znacznie zredukuje przyszły czas poświęcony na refaktoryzację kodu źródłowego.

Strona główna