Aktywne Wpisy
karpiniusz +390
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)
Davvs +1270
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
Klasa Task zostaje jak jest
Zrobić klase TaskCollection która ma samą listę, metody sortowania itp
Klase repo zmienic tak zeby miala w sobie TaskCollection plus metody na zapisywanie itp?
Z czego „zapisuje” to tak jakby „w domyśle” – bo wyobraź sobie, że pamięć nie jest problemem, aplikacje żyją wiecznie i cała aplikacja siedzi w RAMie. Tak właśnie należy traktować repo – jako miejsce, które te dane przechowuje. Ale, że żyjemy w świecie nieidealnym, to repo zazwyczaj udaje tę perfekcję przez zapisywanie i odczytywanie skądś (bazki, pliku, etc).
Collection
: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.htmlCollection tasksSortedByPriority = taskRepo.getAllSortedBy('priority');
Collection tasksSortedByPriority = taskRepo.getAllSortedByPriority();
Korzystający z repo nie może polegać na tym, że repo „pamięta” kolejność elementów w kolekcji:
// kolekcja tasków jest zwracana w domyślnej kolejności
Collection tasks = taskRepo.getAll();
// tutaj sortowanie tasks
sortTasks(tasks);
// to nie powinno nam dać posortowanych danych, ale kolekcję w domyślnej kolejności
Collection tasks2 = taskRepo.getAll();
Ale
tasks = repo.getAll();
tasks.sortByPriority(); // posortowane
Klasy w których grzebałem
Użycie sortowania (btw mozna tu zostawić tego switch'a?)
1. Robisz
taskRepository.getTaskCollection().sortBy(SortType.NAME);
– naruszając Law of Demeter. Osobiście nie traktuję tego jako „błąd” (też mi się zdarza), ale raczej staram się w takich przypadkach zastanowić czy na pewno to musi być w ten sposób.2. Po co Ci settery 1 2 ? Jeśli te obiekty są wymagane do działania – wymagaj ich w konstruktorze. Settery możesz zostawić jeśli faktycznie będziesz chciał móc podmienić te obiekty później.
3. Taki
Jeśli robisz
taskRepository.getTaskCollection().sortBy(SortType.NAME);
to repo nie powinno się nazywaćTaskRepository
tylkoTaskCollectionRepository
– bo służy wtedy do przechowywania obiektów TaskCollection, a nie obiektów Task ;-)W sumie automat byłby akceptowalny (jeśli chodzi o dodawanie/usuwanie), ale tylko w ten sposób, że kolekcja przyjmuje w konstruktorze repo – i jak usuwasz element na kolekcji – to kolekcja usuwa wtedy element na repo (kaskadowo).
Ale nie odwrotnie (że usuwanie z repo wywala automatycznie z kolekcji) i
na szybko co do pkt 2 i 3 to nie tworze tych obiektów przez new tylko pobieram z widoku (androidowe api) a ten drugi konstruktor wlasnie do tego jest (android se z niego korzysta)