Ocena aplikacji do portfolio

Odpowiedz Nowy wątek
2019-03-23 12:10
1

Chciałbym Was prosić o code review aplikacji na androida, która ma być w moim portfolio do szukania pracy jako junior dev. Aplikację wrzuciłem już na sklep Google Play, więc można śmiało pobrać i przetestować.

https://github.com/sirconceptz/Pantry
https://play.google.com/store[...]ils?id=com.hermanowicz.pantry

Dzięki z góry za oceny, krytyczne również (w końcu nie ma lepszej oceny jak spojrzenie innej osoby na Twoją pracę).

edytowany 1x, ostatnio: furious programming, 2019-03-23 17:08

Pozostało 580 znaków

2019-03-23 13:01
1

Popracuj trochę nad wyglądem aplikacji i jakoś fajnie ja zaprezentuj. Ludzie oceniają oczami

A i masz okropny bałagan w kodzie


edytowany 1x, ostatnio: MasterOf, 2019-03-23 13:18

Pozostało 580 znaków

2019-03-23 13:03
1

Co to za technika zaciemniania kodu?
https://github.com/sirconcept[...]/pantry/MyPantryActivity.java

Pozostało 580 znaków

2019-03-23 14:39
0
Citroen napisał(a):

Co to za technika zaciemniania kodu?
https://github.com/sirconcept[...]/pantry/MyPantryActivity.java

Powiesz konkretnie czy mam zgadywać o co chodzi?

Pozostało 580 znaków

2019-03-26 23:50
V-2

Kod nie ma żadnych testów. https://github.com/sirconcept[...]owicz/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ął.


Nie ma najmniejszego powodu, aby w CV pisać "email" przed swoim adresem mailowym, "imię i nazwisko" przed imieniem i nazwiskiem" ani "zdjęcie mojej głowy od przedniej strony" obok ewentualnego zdjęcia.
edytowany 4x, ostatnio: V-2, 2019-03-27 09:42
Szanuję za ten post :D - MasterOf 2019-03-27 07:00
Dzięki bardzo za odpowiedź. Super wszystko opisane, zabieram się za poprawianie. Raz jeszcze dzięki. - SirConceptz 2019-03-27 13:42
Cieszę się że mogłem pomóc. Gdybyś miał dalsze wątpliwości (np. dotyczące MVP) albo wersje po zmianach do oceny, też dawaj śmiało na forum. Dzięki za akceptację odpowiedzi. - V-2 2019-03-27 13:44
Jak najbardziej jeszcze się odezwę ;) Bardzo pomocne uwagi. - SirConceptz 2019-03-27 13:45

Pozostało 580 znaków

2019-03-27 13:47
1

butterknife sobie ogarnij

Pozostało 580 znaków

2019-03-27 13:48
0
m123 napisał(a):

butterknife sobie ogarnij

Pisali mi już o tym na forum Androidowym, ale dzięki bardzo za pomoc. Dorzucę do projektu.

Pozostało 580 znaków

2019-03-27 15:36
0

Zajrzałem na chwilkę, ale jak zobaczyłem ciąg try catch to mi się odechciało.
Dla mnie to jest antyreklama.
Szczególnie jak widzę, że te catch łapią NullPointerException


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2019-03-27 15:40
Wziąłem się za poprawianie tego. Po to pytałem bardziej doświadczonych by doradzili co poprawić. ;) - SirConceptz 2019-03-27 15:38
nie łap NullPointerException. Nigdy! Poprawiaj kod, który powoduje taki exception - MarekR22 2019-03-27 15:40
Okej, poprawię również. - SirConceptz 2019-03-27 15:41

Pozostało 580 znaków

2019-03-27 17:26
0
m123 napisał(a):

butterknife sobie ogarnij

Gdy próbuję dodać tę bibliotekę podczas kompilowania wyskakuje błąd:

More than one file was found with OS independent path 'META-INF/androidx.versionedparcelable_versionedparcelable.version'

Szukałem na Stackoverflow, googlach, itp., ale nic konkretnego nie znalazłem. Nie można "exclude" tego katalogu, ponieważ wyskakuje jeszcze więcej błędów.

Kilka osób zalecało mi też przesiąść się z SQLOpenHelper na Room, jednak w Roomie trzeba podawać stałe zapytania do bazy danych, a ja mam metodę do budowania zapytania zależnie od tego jakie użytkownik poda parametry produktów (np. soki od 300 do 500ml bez cukru). W googlach piszą, żeby zapytania wyszukiwania nie pisać ręcznie (jak ja) tylko, by używać bibliotek za to odpowiedzialnych, lecz nie wiem zbytnio jak się za to zabrać. Room z tego co widzę wymaga stałych zapytań (bez możliwości modyfikowania dynamicznie przez kod). Na razie chcę przerzucić aplikację na MVP, aby móc napisać testy (wcześniej nie wiedziałem jak je napisać przy tym bajzlu :P) i zrobić kod czytelnym.

edytowany 1x, ostatnio: SirConceptz, 2019-03-28 09:11
Proszę tylko o wskazówkę czy idę dobrą drogą: Pobrać wszystkie produkty przez Room -> Trzymać wynik jako LiveData i modyfikować w razie zmiany parametrów wyszukiwania poprzez "Transformations". - SirConceptz 2019-03-28 09:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0