Cześć,
Witam Was w kolejnym wpisie, poświęconym realizacji projektu wieloplatformowej aplikacji „XTravel Alarm” w ramach konkursu Daj się poznać.
Dziś będzie nieco krócej, ponieważ tak, jak wspominałem w ubiegłym tygodniu…
Na razie chciałem nieco poprawić i zrefactoryzować kod, zanim przystąpię do kolejnych działań.
Stało się to za sprawą Bartka (o nim również pisałem w ostatnim poście 😉 ), który nieustannie przekazuje dużo ciekawych wskazówek, zarówno pod względem wydajności aplikacji, jak i samego kodu źródłowego.
Przystąpmy, więc do krótkiej analizy…
Wszystkie zmiany można zobaczyć na Githubie.
- Klasa AlarmLocation nie jest jedynym modelem, z którego klient może korzystać.
Wcześniej co bym nie robił, to zawsze bazowałem na obiekcie tej klasy.
Teraz widok korzysta z innego modelu – AlarmLocationViewModel.
Po co taka zmiana?
A no po to, że UI nie interesują wszystkie dane, jakie zawiera globalny obiekt AlarmLocation.
2. Utworzenie fasady, która zawiera wszystkie funkcjonalności odpowiadające za oddzielny widok (stronę).
W projekcie znajdują się dwie fasady, ponieważ aplikacja korzysta z dwóch widoków. Powyżej przedstawiłem przykład tworzenia jednej z nich.
Natomiast każda z funkcjonalności została zaimplementowana z osobna. To wszystko za sprawą pierwszej zasady programowania obiektowego, która mówi o odpowiedzialności danej klasy/interfejsu za jej konkretne przeznaczenie.
3. Nazewnictwo.
Otóż, Bartek podzielił się ze mną cenną informacją, którą uzyskał biorąc udział w jednej z konferencji.
Jak myślicie, jaki jest największy problem wśród programistów, piszących kod źródłowy?
Odpowiedź jest krótka: nazewnictwo.
To także musiałem poprawić, ponieważ czasami sam zacząłem się gubić w swoim kodzie 😛 Teraz, nie mam z tym żadnych problemów, i mam nadzieję, że osoby, które zrobią na Githubie „code review”, również nie będą mieli z tym kłopotów 😉
Jako przykład zaprezentuję algorytm, jaki wykorzystuję do obliczenia odległości między aktualną pozycją użytkownika, w której się znajduje, a miejscem docelowym.
Stosując takie podejście i nazewnictwo, teraz wiadomo jak problem został rozwiązany i co dokładnie wykorzystano.
4. Dodanie propercji Id.
Dzięki temu, że do głównego modelu AlarmLocation dodałem właściwość unikalnego Id, teraz łatwiej jest mi zarządzać wymianą informacji.
To chyba główne zmiany, jakie zaszły w moim projekcie. Jeśli ktoś jest zainteresowany, może zajrzeć na repozytorium 😉
W kolejnych dniach, będę pracował już na zintegrowaniu aplikacji z Google Maps API, tak, aby użytkownik mógł wyszukiwać interesujące go punkty docelowe.
I to by było chyba na tyle… 😉
Wszystkie zmiany widoczne są w otwartym repozytorium.
Życzę Wam udanego nadchodzącego Wielkiego Tygodnia 😉
Cześć 😉