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.

  1. 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.

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ę).

MainPageFeaturesFacade

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.

Haversine

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.

AlarmPageFeaturesFacade

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ść 😉