Stock Tracker - pierwsza aplikacja w Javie

0

Cześć,

prośba o code review dla mini aplikacji w Javie.
https://github.com/Styrlic/StockTracker/tree/master

Jestem po pierwszej lekturze związanej z Java (Java. Podstawy. Wydanie IX) i chciałem przećwiczyć swoją wiedzę.

Aplikacja ma na celu śledzenie zmian ceny akcji bez potrzeby otwierania przeglądarki i odwiedzania strony dla każdej spółki.

0

Wywal:

  • .settings
  • .project
  • .classpath

z repo, to są pliki od Eclipse kompletnie zbędne (miejscami wręcz przeszkadzają). Reszta code review po świętach :P

0

Tak na szybko bez dokładnego czytania kodu:
-brak testów
-nazwy klas z małej litery (według konwencji powinny być wielką)
-Pomieszanie warstw: poczytaj o MVC i generalnie o oddzieleniu widoku i logiki od siebie.

0

Dlaczego nazwy plików z małej litery?
Dlaczego nazwy klas z małej litery?
Dlaczego takie dziwne wcięcia i tragiczne(nieczytelne) formatowanie kodu?

https://github.com/Styrlic/StockTracker/blob/a51c0f90c79e9c4cc364ce1c98decf066c7a291c/StockTrack/src/stockTrack/stockTrackFrame.java#L10 ????

Rób małe i czytelne funkcje. Tego kolosa powinieneś rozbić na conajmniej 2-3 mniejsze funkcje

https://github.com/Styrlic/StockTracker/blob/a51c0f90c79e9c4cc364ce1c98decf066c7a291c/StockTrack/src/stockTrack/stockTrackPanel.java#L112

Przede wszystkim wykonujesz jakieś dziwne operacje bezpośrednio na widoku. Poczytaj sobie o SOLID i zacznij rozbijać duże funkcje na mniejsze (funkcja powinna mieć 10-20 linijek i maks 3-4 parametry zamiast 60+ linii kodu). Każda klasa powinna robić jedną rzecz więc jeżeli jedna klasa zmienia coś w widoku to niech robi tylko to. Ty oprócz tego dołożyłeś inną zależność - zmieniałeś widok i łączyłeś JSoupem w jednej klasie, zamiast tego powinieneś zrobić dwie klasy - jedna operuje widokiem, druga łączy się JSoupem i parsuje HTML, pierwsza klasa zawiera drugą klasę jako pole(Kompozycja) i tylko wywołuje jedną funkcje np: parser.getPrice() i klasa widok operuje w ten sposób na wyniku klasy Parser nie mając pojęcia co tam się dzieje w środku, obie klasy stają się od siebie niezależne. Teraz np możesz zmienić całą logike i zamiast JSoup użyć innej biblioteki i klasa widok nie ma prawa o tym wiedzieć czym się łączysz i jak to robisz.

To tak w skrócie - wyobraź sobie, że każda klasa to pomieszczenie w domu. Każde pomieszczenie ma inną funkcję np w sypialni nie trzymasz muszli i wanny. W twoim kodzie zrobiłeś tak, że do sypialni wstawiłeś muszę klozetową i wannę - niby można, ale lepiej nadać jednemu pomieszczeniu jedno zadanie.

Tak z grubsza na szybko, jak na pierwszą aplikację jest spoko, sam urodziłem większego potwora pisząc pierwszą, "większą" aplikacje(dla mnie wtedy większa to była taka ponad 100 linii kodu i kilka klas :) ). Nie poddawaj się, powoli do celu, teraz proponuje ci poprawić formatowanie kodu, poczytać o konwencji nazewniczej, o czystości kodu, obczaj sobie co znaczy skrót SOLID każda literka. To jest też idealny moment do nauki pisania testów jednostkowych.

0

Dzięki za uwagi. Pierwszy update poszedł. 18 commintów to tylko przez to, że nie znam jeszcze dobrze GitHuba :).
Zapisałem sobie konwencje nazw i rozwinięcie SOLID, żeby weszły w nawyk.
Spróbowałem zastosować MVC spójrzcie czy o to chodziło.
O testach muszę jeszcze poczytać bo do końca nie wiem jak je zastosować. Miała by to być osobna klasa tylko do testów?

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