Kod nie ma żadnych testów. https://github.com/sirconceptz/Pantry/blob/master/app/src/test/java/com/hermanowicz/pantry/PantryTests.java - czy byłbyś otwarty na propozycję odkupienia tych kopyrajtów? ;)
Brak podziału na warstwy aplikacji - logika biznesowa bezpośrednio w Activities. "Boskie obiekty" do wszystkiego, widok zajmuje się generowaniem pdf'a, DialogManager
na 1000 linii.
W licznych miejscach wychodzi słaba znajomość Android SDK - jak stosowanie printStackTrace
do logowania wyjątków, albo odwołania do getString
poprzez getResources
zamiast bezpośrednio (w kodzie Activity). Metody set...
klasy NotificationCompat.Builder
zwracają instancję samego buildera, po to właśnie, aby je łączyć na zasadzie fluent interface, i nie robić w każdej linijce tej czkawki builder.
, builder.
, builder.
. Takie niuanse to może drobiazgi, ale w nagromadzeniu zaczynają być znamienne.
Nie jest moim zdaniem najlepszym pomysłem zrzucenie wszystkich używanych w aplikacji stałych do jednego, globalnego wiadra, bez względu na rzeczywiste miejsce ich użycia.
Nazewnictwo niezgodne z androidową konwencją: identyfikatory widoków pisane pascal casem (ProductVolume
, ProductWeight
).
Zamiast ListView
lepiej byłoby używać RecyclerView
- to nie tylko moja opinia, ale także zalecenie oficjalnej dokumentacji.
Część decyzji w kwestii formatowania jest, można powiedzieć, tyleż artystyczna, co kontrowersyjna - wyrównania pionowe, taki ASCII art, jak przypuszczam.
Zasadniczo nie powinno się wersjonować całego folderu .idea
, bo są tam śmieci w rodzaju cache'a twojego Android Studio, co nie powinno być nikomu z zewnątrz potrzebne.
Aplikacji nie odpalałem, ale na podstawie zrzutów można powiedzieć, że pod względem interfejsowym nie robi szczególnie dobrego wrażenia. Nie za bardzo odpowiada standardom platformy, chyba że z epoki Androida 2.x. Pomijając warstwę wizualną, nie umieszcza się w aplikacjach androidowych komendy "CLOSE APPLICATION" - czy widziałeś coś takiego w jakiejkolwiek innej apce?
Poziom kodu jest plus minus taki, jakiego można by się spodziewać od kogoś bez żadnego doświadczenia. Natomiast nakład pracy widać, że duży.
Na plus trzeba policzyć, że projekt jest nietrywialnych rozmiarów, że jest umieszczony w storze, i że wykorzystuje różne możliwości platformy - obsługa notyfikacji, skanowanie kodów, i18n. Jako bilet do pierwszej pracy według mnie powinien wystarczać, zważywszy, że większość konkurentów nie będzie miała żadnego portfolio.
Na kolana natomiast nie powala, głównie ze względu na niedostatki architektury i brak testów. Zająłbym się tymi kwestiami, w tej właśnie kolejności - bo bez normalnej architektury trudno o pisanie testów. Na dobry początek poczytałbym o wzorcu Model-View-Presenter i spróbował przerobić aplikację w tym kierunku. Inne opcje (MVVM, MVI) mają nad nim pewne przewagi, ale MVP jest najprostszy w implementacji, więc od niego bym chyba zaczął.