Prośba o ocenę stronki w javie od zielonego

Odpowiedz Nowy wątek
2018-10-30 21:50
0

Yo.
Od pewnego czasu postanowiłem, w wolnym czasie, nauczyć się programować w javie.

Jako, że jestem zielony prosiłbym o ewentualne wskazówki,
porady lub nawet i linki do waszych repozytoriów dzięki którym mógłbym podszkolić swoje umiejętności.

Dodatkowo proszę o rzucenie okiem na moją aplikację, jestem pewny,
że znajdzie się tam kilka rzeczy do poprawienia. Aplikacja ma robić za małą, domową bibliotekę.
https://github.com/karol911212/HomeLibrary

                                                                        Z góry dzięki :p
edytowany 1x, ostatnio: filemoon, 2018-10-30 21:54

Pozostało 580 znaków

2018-10-30 21:52
pozdro
0

popraw link

Pozostało 580 znaków

2018-10-30 21:54
0
pozdro napisał(a):

popraw link

zrobione :p

Pozostało 580 znaków

2018-10-30 22:34
Szczery Karp
0

Możesz startować na juniora z taką apką, tylko olej servlety i inne kotlety. Przerób to na RESTa, zrób prosty froncik w jakimś reactie/vue i szukaj pracy.

No i możesz podpiąć pod to jakieś CI/CD np CircleCI.

Pozostało 580 znaków

2018-10-30 22:39
0
Szczery Karp napisał(a):

Możesz startować na juniora z taką apką, tylko olej servlety i inne kotlety. Przerób to na RESTa, zrób prosty froncik w jakimś reactie/vue i szukaj pracy.

No i możesz podpiąć pod to jakieś CI/CD np CircleCI.

Okej, to już coś. W kolejnym kroku dodam RESTa i zabiorę się za poznawanie spring security. Dzięki

Pozostało 580 znaków

2018-10-31 07:25
eL
1

Skąd ta mania w ludziach żeby nazwy interfejsów zaczynać od I?Np. ISingleBookAdministratorService
A implementacje nazywają się normalnie. Przecież jakby się tak zastanowić to klas implementujących te interfejsy mając DI nie używasz w kodzie. Korzystasz tylko z interfejsów jako kontraktu a implementacja jest wstrzyknięta. Znacznie lepszym rozwiązaniem jest nazywanie interfejsów normalnie bez żadnych sufixów i prefixów a do implementacji dodać np. Impl na koniec.

W klasie BindingResultErrors (i nie tylko) sprawdzasz czy result nie jest nullem albo pusty itp. Proponuje zrobić jeden warunek i skorzystać np. z isBlank . Nie jest to oczywiście żaden błąd ale moim zdaniem ta metoda jest czytelniejsza, obsługuje więcej przypadków i redukuje niepotrzebny kod.

W bardzo wielu klasach zauwazyłem że pola mają dostęp default'owy. to celowe? Jak dla mnie to wszedzie powinno być prywatne.

Takie kody:

new ArrayList<String>().add("sprawdŸ czy poda³eœ odpowiednie dane")

Możesz zamienić np. na:

Arrays.asList("sprawdŸ czy poda³eœ odpowiednie dane")
    @ManyToMany(fetch = FetchType.EAGER)
    @Column(nullable=false)
    private List<AuthorModel> authors;

Proponuję zdebugować aplikację i zobaczyć jaki muł zasysasz robiąc zapytanie np. o Książki :P

W wolnej chwili jeszcze popatrzę ale ogólnie jak na początek to moim zdaniem jest okej, trochę rzeczy do poprawy ale na juniora możesz próbować ;)

w C# chybe zaczyna się implementację od I[...] - OtoKamil 2018-10-31 09:47
@OtoKamil: Odwrotnie :) Nazwy interfejsów zaczyna się od I<intefracename> - S-cat 2018-10-31 09:57

Pozostało 580 znaków

2018-10-31 09:59
0
eL napisał(a):

Skąd ta mania w ludziach żeby nazwy interfejsów zaczynać od I?Np. ISingleBookAdministratorService

W C# są interfejsy biblioteki standardowej używające tej konwencji (np. IEnumerable<t>)

W C# tego co pamiętam (dawno w nim nie pisałem) implementacja interfejsów i dziedziczenie realizowane są przez ten sam, nazwijmy to "operator". Czyli znak dwukropka. Kiedy patrzysz na klasę i patrzysz na to co dziedziczy i implementuje, nie mając kolorowania składni, możesz nie do końca widzieć co jest interfejsem, a co klasą. Stąd chyba ta notacja z wiodącym "I".

Wątek jest o Javie, w której to ta notacja nie ma sensu (moim zdaniem jest zwyczajnie nadmiarowa), aczkolwiek są ludzie którzy mogli być do tego przyzwyczajeni i jest im wygodnie w ten sposób nazywać rzeczy. ;)

edytowany 4x, ostatnio: S-cat, 2018-10-31 10:07
Co mają klasy C# do Javy? - eL 2018-10-31 10:02
Aaa zgubiłem nieco wątek, delikatnie nawiązywałem do komentarza @OtoKamil w poprzednim poście. - S-cat 2018-10-31 10:03
W Javie ta notacja dla mnie nie ma zbytniego sensu. - S-cat 2018-10-31 10:04

Pozostało 580 znaków

2018-10-31 14:17
0
S-cat napisał(a):
eL napisał(a):

Skąd ta mania w ludziach żeby nazwy interfejsów zaczynać od I?Np. ISingleBookAdministratorService

W C# są interfejsy biblioteki standardowej używające tej konwencji (np. IEnumerable<t>)

W C# tego co pamiętam (dawno w nim nie pisałem) implementacja interfejsów i dziedziczenie realizowane są przez ten sam, nazwijmy to "operator". Czyli znak dwukropka. Kiedy patrzysz na klasę i patrzysz na to co dziedziczy i implementuje, nie mając kolorowania składni, możesz nie do końca widzieć co jest interfejsem, a co klasą. Stąd chyba ta notacja z wiodącym "I".

Wątek jest o Javie, w której to ta notacja nie ma sensu (moim zdaniem jest zwyczajnie nadmiarowa), aczkolwiek są ludzie którzy mogli być do tego przyzwyczajeni i jest im wygodnie w ten sposób nazywać rzeczy. ;)

Moje I nabyłem przeglądając kod innych, uznałem to za sposób na bardziej opisowy kod(chociaż faktycznie mało to zmienia)

Nie idź tą drogą :) - eL 2018-10-31 14:44

Pozostało 580 znaków

2018-10-31 14:30
3

Co do testów:

  • Powinno się unikać randomowych Stringów ale wiadomo, nie zawsze się da. Natomiast nazwanie metody

    splitAuthorsWhereSurnameEqualsKotekPiesMisiuTest()

    to już przesada xD

  • Bardzo dużo mocków. Możesz na potrzeby testów stworzyć jakąś in-memory implementacje bazy.

a jak wypadły moje testy, robią robotę? W sumie testy uczyłem się pisać na tym projekcie. - filemoon 2018-10-31 15:49

Pozostało 580 znaków

2018-10-31 15:40
0
baant napisał(a):

Co do testów:

  • Powinno się unikać randomowych Stringów ale wiadomo, nie zawsze się da. Natomiast nazwanie metody

    splitAuthorsWhereSurnameEqualsKotekPiesMisiuTest()

    to już przesada xD

  • Bardzo dużo mocków. Możesz na potrzeby testów stworzyć jakąś in-memory implementacje bazy.

Jestem konsekwentnym człowiekiem ! Ale nie ukrywam, że masz rację :p
Masz link do jakiegoś gita żebym mógł lepiej zrozumieć sprawę(masz na myśli h2 czy jakąś listę statyczną)?

edytowany 2x, ostatnio: filemoon, 2018-10-31 15:55

Pozostało 580 znaków

2018-10-31 15:48
1
  1. Po te interfejsy z jedną implentacją?
    2.Wrzucanie eclipsowego workspace nie jest najlepszym pomysłem. Wrzuć projekt a eclipsowe badziewie daj do gitignore
    3.To dziedziczenie po klasie model też jest słabe. Klasa np. user powinna mieć userId a nie id jako pole.
    4.Użyj lomboka
    5.Package w katalogu test powinien być taki sam jak w mainie.
    Tzn.
    com.superapp.service.SuperServiceTest odpowiada na com.superapp.service.SuperService
    6.Zainstaluj sobie normalne IDE (IntelliJ) zamiast eclipsa
    7.Polecam korzystac z VAVRa

Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 1x, ostatnio: scibi92, 2018-10-31 21:51
Pokaż pozostałe 3 komentarze
Nie zanotowałem żeby lombok wydłużał czas kommpilacji - scibi92 2018-10-31 20:59
@lubie_programowac: widziałem to, ale to troche inna sytuacja. Kolega robi żadnego equalsa ani hashcode tylko robi dziedziczenie żeby było id współdzielone - scibi92 2018-10-31 21:02
@albundy: w jaki sposób i w jakich okolicznościach może "uszkodzić kod"? Sugerujesz że javowy procesor adnotacji jest wadliwy czy że lombok go źle używa? - CountZero 2018-10-31 21:48
@CountZero przeczytaj drugą stronę - mój wpis - albundy 2018-10-31 21:49
Właśnie czytam, nie zauważyłem ze go napisałeś :). - CountZero 2018-10-31 21:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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