Minęły już ponad dwa lata, odkąd po raz pierwszy zainteresowałem się programowaniem Androida. Chciałbym się z Wami podzielić siedmioma rzeczami, których się nauczyłem podczas tej przygody.
Słyszeliście o takich akronimach jak MVC, MVP, MVVM? To architektury oprogramowania i powinniście je znać. Wielu początkujących pisze swój kod tylko podczas zajęć. Może się to wydawać OK na początku, ale w rzeczywistości takie nie jest...
W miarę rozwoju projektu Twój kod będzie coraz bardziej zagmatwany i mocniej powiązany, sprawiając, że testy, utrzymanie i rozwój nowych funkcji będzie bardzo trudny.
Dlatego powinno się wybrać odpowiednią architekturę już na początku. Tak jak wcześniej powiedziałem, trochę ich jest i każda ma swoje wady i zalety. Google do dzisiaj rekomenduje taką architekturę aplikacji:
Architektura aplikacji zalecana przez programistów Androida
Jak widać powyżej, każdy komponent jest zależny jedynie od elementu, który jest jeden poziom poniżej. Taki design zapewnia spójny UX, respektuje zasadę Separation of Concerns i pozwala na łatwe testowanie i skalowanie. Nie ma oczywiście idealnej struktury dla każdej sytuacji. Jak mówi Google:
Niemożliwym jest napisanie aplikacji, która dobrze działa w każdym możliwym scenariuszu, w jeden jedyny sposób. Powyższa architektura jest jednak najlepsza na początek, biorąc pod uwagę różne scenariusze i sposoby pracy.
Nie będę się wdawał w szczegóły tej architektury, bo nic nie wniesie to do artykułu, ale polecę użyteczne źródła:
Kiedy zaczynałem swój pierwszy projekt, chciałem wszystko zrobić od zera. Nie chciałem używać zewnętrznych bibliotek. Pewnie mi się wydawało, że mogę się w taki sposób więcej nauczyć.To prawda, ale tylko dla pierwszego projektu. Ogólnie takie podejście jest niepoprawne. Traci się wtedy mnóstwo czasu na odkrywanie na nowo Ameryki. Potem używałem już gotowych zasobów. To działało, bo można znaleźć darmową bibliotekę na każdą sytuację. Zacząłem zatem dodawać jedną bibliotekę, potem następną i następną, i następną... i mój projekt okazał się niczym więcej niż bezładną mieszaniną zewnętrznych bibliotek. Tak też nie róbcie. Wybierajcie ostrożnie. Nie wszystkie gotowe biblioteki są dobrze napisane i godne zaufania.
Moja rada to znaleźć złoty środek. Jeśli masz problem i ktoś go już rozwiązał fajną biblioteką, to jej użyj. Jeśli potrzebujesz klienta HTTP, użyj Retrofit. Jeśli musisz często pobierać i zarządzać obrazkami, możesz w tym celu użyć Glide. To świetne, popularne i stabilne biblioteki.
Wiedz jednak, że nie wszystkie biblioteki mają takie cechy. Zawsze sprawdzaj, kto jest autorem i, jeśli masz na to czas, prześledź kod źródłowy i postaraj się zrozumieć, jak dany problem został rozwiązany.
Android Arsenal ma sporą bazę danych z prawie wszystkimi możliwymi bibliotekami Androida.
Jeśli pracujesz jako Android developer w dużej firmie, praca nad designem UI i UX przypadnie pewnie komuś innemu. Jeśli jednak pracujesz w startupie lub nad osobistym projektem, będziesz się musiał zająć i tym. I jeśli dobry interfejs jest wisienką na torcie dobrego produktu, to zły interfejs może go całkowicie zrujnować.
“Interfejs użytkownika jest jak żart - jeśli musisz go tłumaczyć, to znaczy, że jest do kitu” - Martin LeBlanc.
Błędem, jaki często popełniałem, było umieszczanie zbyt wielu elementów w interfejsie. Użytkownicy są wtedy zagubieni, a estetycznie też to dobrze nie wygląda. Moja rada to prostota i przejrzystość. Staraj się tworzyć proste i przyjazne dla użytkowników interfejsy, zwłaszcza jeśli nie masz dużych umiejętności designerskich. Jeśli jednak takowe posiadasz, postaraj się go ulepszyć, aby bardziej zapadał w pamięć.
Pamiętaj o tym, aby przetestować swój interfejs na urządzeniach o różnych rozmiarach i różnym dpi. Nie używaj stałych jednostek miary takich jak piksele, zwróć się raczej ku takim jak dp lub sp dla tekstu.
Ile razy przyszła Ci do głowy taka myśl: “aplikacja została przetestowana na moim smartfonie i wszystko działa!”. Wiesz dobrze, że to nie wystarczy. Być może skrócenie fazy testowej zaoszczędzi Ci kilka dni, ale może kosztować Cię kilka tygodni na produkcji. Dobrze przepracowana faza testów pomaga w sprawdzeniu stabilności, działania i funkcjonalności Twojej aplikacji przed jej wypuszczeniem.
Jak testować? To dosyć szeroki temat. Istnieje wiele rodzajów testów i każdy z nich służy do czego innego.
Poziomy testowania według Android Developers
Jak widać na powyższej ilustracji, można zidentyfikować trzy rodzaje testów:
W oparciu o konkretny przykład użycia Twojej aplikacji musisz zdecydować, jak dużo trzeba dany test przeprowadzić.
Sprawdzona metoda sugerowana przez Google to podzielić swoje testy w następujący sposób: 70% testów to testy jednostkowe, 20% testów to testy integracyjne, a 10% testów to testowanie graficznego interfejsu użytkownika.
Z pewnością już go używasz, ale czy wystarczająco wykorzystujesz jego potencjał? Istnieje wiele narzędzi wbudowanych w Android Studio, które pomogą Ci rozwinąć swoją aplikację. Oto te, których ja najczęściej używam:
Android Studio ma też funkcję, która pozwala na zmianę Waszego PC w grzejnik :)
Zobacz więcej w instrukcji Android Studio.
Git to system kontroli wersji i można z nim zrobić dwie świetne, lecz bardzo podstawowe rzeczy: śledzić zmiany w plikach i upraszczać pracę nad dużymi projektami z wieloma programistami.
Nie rozumiem, dlaczego muszę używać Git. Mogę po prostu zrobić kopię zapasową mojego projektu - Ja, sprzed trzech lat
Powiem Wam teraz coś, co sam chciałbym usłyszeć trzy lata temu: potrzebujesz Gita, ponieważ może on radykalnie polepszyć Twój workflow. Dlaczego? Oto powody:
Jest tego jeszcze więcej, ale mam nadzieję, że powyższe powody Ci wystarczą. Więc jeśli wydaje Ci się, że nie potrzebujesz Gita, to się mylisz.
Instrukcje na Github i BitBucket.
Nadchodzi czas, kiedy wydaje Ci się, że możesz wydać swoją apkę. Ale czy na pewno jest ona gotowa? Na takim etapie pośpiech jest niewskazany i lepiej jest zadać sobie kilka pytań:
Jeśli odpowiedź na każde z powyższych pytań jest twierdząca, to możesz iść dalej. Sugeruję wygenerowanie Android App Bundle zamiast APK do optymalizacji rozmiaru zasobów swojej aplikacji.
Po publikacji na Google Play, sprawdźcie feedback od użytkowników i wszystkie dane analityczne. Bardzo to pomoże przy ulepszaniu aplikacji.
Oto świetna checklista stworzona przez Android Developers
W taki sposób dotarliśmy do końca. Oto najważniejsze rzeczy, których nauczyłem się programując Androida. Wiem jednak, że można się jeszcze o wiele więcej nauczyć.
Oryginał tekstu w języku angielskim możesz przeczytać tutaj.