Wpis z mikrobloga

Czołem Mircy,
Powoli zaczynam znowu programować. Ponad dwa lata temu skończyłem technikum, ale raczej unikałem przez całe cztery lata jakiegokolwiek samokształcenia, przez co sporo zapomniałem, o ile w ogóle chciało mi się coś nauczyć.
Ale do rzeczy: tworzę mały projekcik przelicznika miar w Javie. W sumie to w takiej formie chyba go już zostawię, jednak byłbym wdzięczny za code review. Wszelkie uwagi bardzo mile widziane, co do nazw zmiennych, logiki całego programu czy nazw commitów na gicie.
Link do githuba
#programowanie #codereview #java
  • 17
@wczoraj: Czyli przyjąć założenie, że master jest tym co trafia w ręce potencjalnego użytkownika i musi mieć "ręce i nogi"? Więc za każdym razem jak chcę coś zmienić/dodać robić to na branchu? Z tym że raczej każdy commit chyba kończył się działająca wersją, bo program powstał dosyć szybko, tylko potem go "czyściłem".
@Seveir: przy takim projekcie jak każdy commit działa dobrze to mozesz dla zasady tak robić żeby wyrobić nawyk trzymania porządku na repo
jak pracujesz z kimś to dodatkowo potrzebny jest branch develop który traktujesz jako taki master dla Ciebie
Moim zdaniem fajnie jest jak programisci robią branche od swojego brancha "develop" i tam działające rzeczy wrzucają jak skończą a następnie jak wiedzą że jest czas release to do mastera dopiero
@wczoraj: @krasnoludkolo: Do tej pory branche uważałem za coś potrzebnego mi bardziej w przyszłości, kiedy już będę musiał z kimś współpracować, ale może dla wyuczenia nawyku, przy następnym projekcie postaram się ich używać. Dzięki za rozjaśnienie tej strony :)
@b3rgman: Chodzi Ci o to, żeby zamiast System.out.println() w metodzie writeProblemMessage był System.err.println()?

A co do scannera to lepiej go raz stworzyć dla całej klasy czy w każdej metodzie? Bo nie wiem czy dobrze rozumiem, ale czy po zakończeniu metody obiekt scannera zostaje "sprzątnięty"?
@Seveir:
trochę dziwne jest, że w liście z jednostkami dodajesz np. takie coś new Unit("BACK", -1)
Generalnie zarówno miary jak i odległości to pewien zamknięty zbiór, więc zamiast klasy Unit wykorzystałbym na Twoim miejscu tutaj enumy. Klasy miałyby sens, gdybyś dawał użytkownikowi możliwość definiowania jednostek.
Liczby reprezentujesz jako double, co nie jest jakimś wielkim błędem w takim małym programiku, ale od razu możesz sobie przećwiczyć BigDecimale jako prawidłowy wybór przy precyzyjnych
@Seveir: to ja jeszcze od siebie coś dorzucę:
-inicjalizacje list rób w konstruktorze zamiast sprawdzać czy listy są nie ustawione i je ustawiać. Zazwyczaj tam się takich rzeczy szuka
-zamiast if(!listsAreSet()) lepiej jest pisac if(listsAreNotSet()). Ogólnie staraj się unikac negowania rezultatu metody. Mało czytelne to bywa
-zawsze używaj klamer, nawet jak w if jest jedna linijka. Czyli zamiast if(!listsAreSet()) setLists(); pisz if(!listsAreSet()) { setLists(); }
-w if (selectedNumber <= maxValue