Aktywne Wpisy
Davvs +1188
karpiniusz +353
Sąsiad nosacz dzwonił przez domofon żebym przeparkował bo zająłem mu "jego miejsce". Odmówiłem bo to zwykle osiedle i nie ma tu prywatnych miejsc (każdy parkuje gdzie akurat wolne). Postanowił mnie więc zastawić. Półgodziny później najwyraźniej stwierdził że mam za dużo miejsca i jakoś wyjadę więc przeparkował jeszcze bliżej. Straż miejska wezwana, czekam na rozwój sytuacji (może sam dostanę mandacik ale warto będzie) ( ͡º ͜ʖ͡º)
#bekazpodludzi #
#bekazpodludzi #
![karpiniusz - Sąsiad nosacz dzwonił przez domofon żebym przeparkował bo zająłem mu "je...](https://wykop.pl/cdn/c3201142/bc9b056371be5e53447f0746b018961ebc5770ad3d795b5ab63503585eb40e96,w150.jpg)
Napisałem sobie pierwszą apke, nic skomplikowanego, prosty TODOList. Zobaczyłby może ktoś z was co robię źle, co można zrobić lepiej? ;)
Kod
1.
Task
: dawno nie kodziłem w Javie, alesuper()
w konstruktorze chyba zbędne – nie dziedziczysz po żadnej klasie.2.
Task
: w konstruktorze parametr nazywaszinfo
, dalej jużname
– do ujednolicenia.3.
TaskRepository
: nie traktuj repozytorium jak kolekcję (czyli nie powinna posiadać metodysort
) – ale raczej jako dostawcę kolekcji. Czyli ewentualnie możesz poprosić repozytorium o posortowaną kolekcję (zamiastrepo.sort(); repo.getAll()
raczej róbrepo.getAllSorted(sortBy)
Grafiki na razie w wersji roboczej ;)
@krasnoludkolo: IMHO repo jest na tyle proste, że bym olał. Tak na prawdę to repozytorium nie ma za bardzo logiki, chyba, że ją potem dodasz i będziesz chciał wydzielić persystencję gdzie indziej, żeby mieć SOLID.
i co do 4. Jeśli te metody będą prywatne to jak uzyskać efekt z metod onResume onStop itp?
@krasnoludkolo: Repozytorium jest miejscem, skąd możesz czerpać obiekt(y). Służy Ci do tego, żeby mieć skąd pobrać jeden obiekt lub kolekcję obiektów.
To nie jest tak, że wykonujesz na nim jakieś działania. Nie sortujesz repozytorium. Możesz sortować kolekcję obiektów, ale nie repozytorium.
Czyli opcje dwie:
a.)
tasks = repo.getAll()
zwraca kolekcję i ta kolekcja ma metody sortowaniatasks.sortBy(sortedBy)
b.)
tasks = repo.getAll(sortedBy)
– czyli repo zwraca@krasnoludkolo: Jeszcze a propos tego. Wybraź sobie, że chcesz pobrać tylko taski, które mają priorytet powyżej określonego poziomu.
Nie będziesz robić metody typu
repo.setReturningOnlyWithPriorityHigherThan(priority); repo.getAll();
.Raczej chcesz mieć
repo.getWithPriorityHigherThan(priority);
Czyli repo zwraca Ci gotową kolekcję o jakichś cechach, ale robisz to na poziomie metody, zamiast mutować samo repo.
http://martinfowler.com/bliki/TellDontAsk.html
Czyli powinienem zrobić tak, że przy każdorazowej zmianie danych zrobić coś takiego?
adapter.clear()
adapter.addAll(repo.getAllSortBy(sortedby))
Nie wiem więc jaka do końca jest rola tego adaptera, ale z tego co widzę
TaskListAdapter
dostaje repo w konstruktorze i je sobie trzyma w polu. Więc widzę dwie opcje:a.) dorób sobie
adapter.reload()
(w końcu ma repo, więc sam sobieTaskCollection
brzmi bardziej „pro” ;-)Tak czy siak, wtedy wywalasz wszystkie funkcje zapisywania, zamieniasz save na add, etc.
SingleResponsibilityPrinciple: albo jest kolekcją albo jej persystencją.
1. Podmioty, obiekty którymi zarządzasz (Task),
2. Zestawy, listy, kolekcje tych podmiotów (TaskCollection, ArrayCollection, Array, TaskArray),
3. Dostarczyciela/zarządcę powyższych: repozytorium.
Podmiot (Task) może mutować siebie (może mieć jakieś cechy zmienione), ale nie powinien siebie zapisywać (tym zajmuje się repozytorium).
Kolekcja może mutować siebie (możesz do niej dodawać podmioty, usuwać, sortować), ale nie powinna mutować podmiotów (Tasków) i nie powinna siebie zapisywać.
Repozytorium może mutować