#19 Szybkie rozszerzanie funkcjonalności

Zbliżamy się do końca konkursu DSP, to już przedostatni wpis, noo i trzeba pomyśleć o jakiejś stabilizacji. Aplikacja nie będzie ukończona do dwudziestego wpisu, ale w jakiś sposób musi działać. Finalnie pewnie będzie ukończona we wrześniu, nie będę nad nią działał sam 😉 Dzisiaj dodałem kod odpowiedzialny za uruchamianie zadań praktycznych, testów i customowych prób. Kod dla funkcjonalności porównywania i dodawania. Najwięcej czasu zajęły poprawki w wyglądzie i obsługa nowych przycisków, reszta poszła błyskawicznie, dzięki zaimplementowaniu wielu rzeczy w nadklasie. Szybki rzut oka na aplikację:

Więcej funkcji się już niestety nie pojawi, następny wpis będzie o drobnych poprawkach w wyglądzie, etc. Ale skupmy się na tym co dodałem, czyli np funkcji porównywania z opcją ustawienia sobie czasu i ilości odpowiedzi:

Kodzik głównie dziedziczy, te funkcjonalności się powtarzają, więc w sumie czemu nie 😉 Spójrzmy np na to:

Jak już pisałem wcześniej, mamy tutaj interfejs operation który decyduje którą implementację wybrać. Metoda nextPoint odpowiada true, jeśli mamy wystartować następną aktywność, lub false jeśli wyczyścić ekran i wykonać inne operacje, które mamy opisane w jednej metodzie: onClickCommon. Ważne aby wyczyścić ekran, zanim wylosujemy następne numery. Animacja się rozpocznie w osobnym wątku, i wszystko zdąży się wykonać, zanim zauważymy zmiany. To bardzo fajna cecha, nie trzeba o tym myśleć i przydatna w większości przypadków. Ale niestety nie we wszystkich, np trzeba pamiętać, aby wyłączać parametr clickable na elementach, kiedy uruchamiamy jakąś długo trwającą animację i nic ma jej nie przerywać.

Jak widać czasem przygotowanie sobie dobrego API, i wydzielenie kodu który się powtarza niejednokrotnie trwa dłużej, niż faktyczne korzystanie z niego. I wydaje mi się, że to dobra droga, w przypadku rozrastania się programu, o wiele łatwiej można dodawać nowe funkcje.

Projekt na Github.

Pozdrawiam!