Wpis z mikrobloga

Hej
Mógłby ktoś zrobić mały #codereview? ;) Klasa ta jest częścią aplikacji, którą pisze w ramach nauki, do ustawiania sobie przypomnień. Jest to activity do do tworzenia obiektów przypomnień które są potem wrzucane do AlarmManagera. Założenie jest takie, że w zależności od tego jaką flage dodamy w intencie ustawi się pod tworzenie nowej albo edytowanie dodanego w intencie obiektu.

Klasa troche mi spuchła od początku, wiec prosiłbym o jakieś porady co mogę poprawić ;)

#androiddev #java
KOD
  • 12
@krasnoludkolo: No ale co, mamy za ciebie to zrobić? Przekaz jest jasny, jedna klasa = jedna odpowiedzialność. Jeśli klasa rośnie, identyfikujesz w ramach tej klasy więcej niż jedną odpowiedzialność i rozbijasz klasę na mniejsze, tak aby te mniejsze faktycznie zajmowały się tylko jedną rzeczą.
@krasnoludkolo: Nie jestem androidowcem, więc moje część moich uwag będzie nietrafionych, bo nie wiem jakie są zwyczaje, ale postaram się coś skrobnąć:
- Możesz przenieść listenery i inne zagnieżdżone klasy do osobnych plików. Zamiast wykorzystywać this z outer class w celu uzyskania kontekstu (a z niego np. FragmentManagera), można przekazać context przez konstruktor. Jeśli jednak bardzo chcesz zostawić listenery w jednym pliku, to uczyń je private classami.
- formatuj kod, uważaj
@an21:
Dzięki za porady ;)

- postaraj się oddzielić logikę biznesową aplikacji od obsugi UI. Przenieś logikę aplikacji do osobnych klas


Mógłbyś trochę rozwinąć co jest a co nie jest logiką biznesową?
@krasnoludkolo: ustawianie kolorów, tekstów, przycisków to czysta obsługa UI. Logika biznesowa opisuje w jaki sposób działa aplikacja. Np. gdybyś pisał sklep online, częścią logiki mogłaby być klasa Order, która definiowałaby logikę związaną z zamówieniem, ale nie miałaby nic wspólnego z tym, jak jest wyświetlana (UI)
@krasnoludkolo: Polecam skorzystać ze wzorca MVP ;) OnClickListenery powinny zostać w aktywności, drugą sprawą jest dlaczego nie używasz np. Butterknifa? ;) Dużo ładniej kod by wyglądał + mógłbyś za jego pomocą obsłużyć OnClickListenery np.

EDIT: No i napewno ja bym nie rozdzielał click listenerów na osobne klasy, wg. mnie to produkuje dużo nadmiarowego kodu. Dodatkowo pousuwałbym entery na końcu klas i na początku metod, ale to czysto edytorska sprawa ;)