Witam, jeżeli masz chwilę to prosiłbym abyś o sprawdzania mojego projektu i o porady co do projektu lub czego się uczyć albo to i to. Z góry dzięki :). Ogólnie to celuje w Java Developera, bo jednak te stronki to chyba nie dla mnie.
Link do strony:
- stronka na heroku: https://home-budget-site.herokuapp.com/home
Link do repozytoriów:
- strona: https://github.com/Oziaka/home-budget-site
- REST API: https://github.com/Oziaka/home-budget-api
Fajnie, że masz rozdzielone repozytoria na frontend i backend. Z angulara się nie znam, ale popatrzyłem na backendową część i parę uwag ode mnie:
-
https://github.com/Oziaka/home-budget-api/blob/master/dev/database/dropTables.sql - ciekawi mnie, czemu jest tylko jeden plik sqlowy, który dropuje bazę? :) Często stosowanym podejściem są skrypty migracyjne, np
Flyway
(ihibernate.ddl-auto
ustawione na false) - Wersja javy definiowane osobno w
pom.xml
i wsystem.properties
? - https://github.com/Oziaka/home-budget-api/blob/master/src/main/java/pl/security/user_role/UserRoleResource.java - pusty controller?
- https://github.com/Oziaka/home-budget-api/blob/master/src/main/java/pl/security/user_role/UserRoleDto.java - trochę jak dla mnie to logika powinna iść w drugim kierunku -> Czyli zamiast robić tak, że rola usera ma w sobie set userów, wolałbym, żeby to każdy z userów miał set roli. Bo rola, sama w sobie, nie powinna wiedzieć którzy userzy ją mają (jest sobie rola, i tyle jej wystarczy, że istnieje)
-
https://github.com/Oziaka/home-budget-api/blob/master/src/main/java/pl/user/User.java -> relacja
@ManyToMany
z Listą jest bardzo nieefektywna - see https://vladmihalcea.com/14-high-performance-java-persistence-tips/ punkt 7 -
https://github.com/Oziaka/home-budget-api/blob/master/src/main/java/pl/user/User.java (ale w sumie i reszta aplikacji) - unidirectional
@OneToMany
jest również nieefektywna - see https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/
To tak na pierwszy rzut oka, nie przejrzałem wszystkich klas ;) ale ogólnie skoro dopiero "celujesz" w java developera, to jak dla mnie bardzo ładnie.
No poprawiłem te relacje i dałem przy mapach sety zamiast list i dodałem wartość mappedby. Chciałem jeszcze zapytać, co dalej robić żeby dostać pracę jako programista i czy ten projekt spełni wymagania rekruterów?
https://github.com/Oziaka/home-budget-site/blob/master/src/app/register/register.component.ts - sprawdzenie zgodności haseł można fajnie ograć za pomoca validatora
https://github.com/Oziaka/home-budget-site/blob/master/src/app/models/user.model.ts - do takich modeli lepiej używać interfejsów niż klas
- z tego co zauważyłem w projektach dobrą praktyką jest explicite podawanie modyfikatorów dostępu nawet jeśli domyślnie są public
- dodatkowo masz dużo pustych plików css, konstruktorów i metod cyklu życia w komponentach. Jeśli to jest zostawione na poczet dalszej pracy to ok ale ogólnie sie takie rzeczy usuwa