Cześć szukam kodu do czytania napisanego w Javie najlepiej web service oparty na spring boot i hibernate nie musi być skomplikowany ale chciałbym żeby zachowywał wszystkie standardy czystego kodu. Miał rowniez testy jednostkowe i wykorzystywał interfejsy, klasy abstrakcyjne oraz wyciągał dane z bazy danych najlepiej mySQL. Ponieważ uczę się zasad pisania czystego kodu oraz testów jednostkowych chciałbym mieć podgląd jak to wszystko wygląda w pełnym projekcie a nie na pojedynczych przykładach.
Jak by ktoś podesłał linku do takiego projektu będę bardzo wdzięczny.
Musisz się zdecydować, czy czysty kod, czy spring boot i hibernate?
Takie odpowiedzi tez mnie satysfakcjonuje ale jak bym mógł prosić o rozwiniecie. Ponieważ po prostu nie rozumiem dlaczego muszę wybrać.
bo nie ma ksiazki ktora to wszystko laczy
moze podasz mi ksiazke, ktora laczy dramat, komedie, sci fi i do tego rozgrywa sie w latach nowozytnych z rycerzami, a no i jest tam fiona od shreka?
No tak ale ja nie szukam książki tylko kodu czy to na GitHub czy gdzieś indziej. Ceeml mojego pytania było znalezienie kodu dobrze napisanego do którego nie ma zastrzeżeni oraz jest w oparciu o spring boot oraz hibernate. Może robić cokolwiek czy to będzie sklep internetowy czy cokolwiek innego nie robi różnicy.
Miłosz Siwiec napisał(a):
No tak ale ja nie szukam książki tylko kodu czy to na GitHub czy gdzieś indziej. Ceeml mojego pytania było znalezienie kodu dobrze napisanego do którego nie ma zastrzeżeni oraz jest w oparciu o spring boot oraz hibernate. Może robić cokolwiek czy to będzie sklep internetowy czy cokolwiek innego nie robi różnicy.
Rzecz w tym, że ani springa, ani JPA / Hibernate (który z kolei wywodzi się z pionu Java EE) nie nauczysz się czytając kod napisany w stosunku do tych frameworków (nawet mniej zły)
Obszerne użycie adnotacji (i konwencji - których realizacją zapewnia olbrzymi kontener) powoduje, że nie jest on liniowy, "sekwencyjny" ( używam słowa "sekwencyjny" w szczególnym sensie, ale go nie gwałcę). Nie będziesz miał wiedzy przyczyna-skutek, co ja nazywam czarami. Bo @jarekr000000 tez używa słowa "czary", ale nadaje mu inny akcent, niezupełnie sprzeczny z moim, ale inny.
Powiedz lepiej, że chcesz (ten jak najmniej zły kod) zarypać, zmienić kilka klas i modlić się, aby czary się nie popsuły.
Poznać mozna z dokumentacji (i porażek na kolejnych próbach), gdzie konwencja za konwencją, adnotacja za adnotacją się dowiesz "jeśli napiszesz to, to skutki z drugiej strony galaktyki kodu galaktyczne będa takie a takie"
Miłosz Siwiec napisał(a):
Takie odpowiedzi tez mnie satysfakcjonuje ale jak bym mógł prosić o rozwiniecie. Ponieważ po prostu nie rozumiem dlaczego muszę wybrać.
Rozwinięcie Jarka jest m.in. na YT
Miłosz Siwiec napisał(a):
Jak by ktoś podesłał linku do takiego projektu będę bardzo wdzięczny.
Proszę bardzo
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
Miłosz Siwiec napisał(a):
... uczę się zasad pisania czystego kodu oraz testów jednostkowych chciałbym mieć podgląd jak to wszystko wygląda w pełnym projekcie a nie na pojedynczych przykładach.
Czy może słyszałeś że ktoś nauczył się karate oglądając filmy z Brucem Lee?
A może słyszałeś że ktoś nauczył się malować oglądając obrazy Leonardo da Vinci?
To skąd przekonanie że czegoś się nauczysz oglądając cudzy kod?
ZrobieDobrze napisał(a):
Miłosz Siwiec napisał(a):
Jak by ktoś podesłał linku do takiego projektu będę bardzo wdzięczny.
Proszę bardzo
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
Błe, monolit.
Trzeba podzielić na mikroserwisy, wtedy dopiero może.
Chciałbym sprostować trochę moje zamiary bo może przez moja niedokładności zostały inaczej potraktowane
Nie chciałem sie z cudzego kodu uczyc tych frameworków w/w ani tez kopiować niczego, ponieważ mam podstawy ich i potrafię je wykorzystać oraz wiem jak zdobywać większa wiedze w tym zakresie.
Zadajac to pytani chciałem zobaczyć do czego są robione testy jednostkowe i w jaki sposób oraz jak w kodzie wykorzystywane klasy abstrakcyjne oraz interfasie nie znaczy to ze nie wiem po co się je robi ani czemu je się wykorzystuje. Również nazywanie i dzielenie pakietów oraz cała struktura takiej aplikacji.
Np podzial na pakiety może być w kilku szkołach.
Jeden projekt pokaże ci tylko jedno z podejść, niekoniecznie najbardziej perspektywiczne - może to być złączone z dość dobrą jakością w innych obszarch. Co wywnioskujesz?
Nic teorii nie zastapi, są nt pakietyzacji liczne YT, w tym po polsku
Nt kals abstrakcyjnych niedawno była tu gorąca dyskusja. Interfejsów jest często za dużo (zależnie od szkołu otwockiej czy falenickiej) a tylko przez sposób myślenia o wstrzykiwaniu (przez wielu uważane za zuo).
uważam, ze nie zyskasz nic w stosunku do poświęconego czasu. 3godz? 5 godz na jeden wiekszy projekt? 2 dni? To ile pożytecznych "filmików" obejrzysz w tym czasie
Sam Spring jest (zdaniem wielu) złym projektem, choć ma dominację rynkową - to jest bardzo częste.
Więc w tej samej skali czego szukasz? Dobrze zaprojektowanego (o ile to możliwe), a o niskim udziale (mało gwiazdek githubowych), czy słabiznę ale masowo "lubianą" przez kopiujacych czy podobnych do ciebie.
Źle postawione pytanie / cel.
Nie chcę się chwalić, ale ale mógłbyś obczaić moją bibliotekę: https://github.com/T-Regx/T-Regx/tree/master/src/CleanRegex (np pakiet Parser
jest dobrym przykładem: https://github.com/T-Regx/T-Regx/tree/master/src/CleanRegex/Internal/Prepared/Parser) Według mnie napisana w duchu "Clean Code"'a.
Tylko że to jest biblioteka, a nie aplikacja, więc może nie być tym czego szukasz dokładnie.
Co prawda PHP a nie Java, ale zasady czystego kodu powinny być takie same (nazewnictwo, funkcje, klasy, testy, etc.).
Miłosz Siwiec napisał(a):
Cześć szukam kodu do czytania napisanego w Javie najlepiej web service oparty na spring boot i hibernate nie musi być skomplikowany ale chciałbym żeby zachowywał wszystkie standardy czystego kodu.
Nie mam pojęcia, co to jest ten Spring Boot i Hibernate, ale szukanie tego na GH w zakładce repo znalazło mi coś takiego:
https://github.com/AnghelLeonard/Hibernate-SpringBoot
About Collection of 300+ best practices for Java persistence performance in Spring Boot applications
tu jakaś książka jest o tym i przykłady kodu.
poza tym są jakieś inne repa: https://github.com/search?q=spring+boot++hibernate&type=repositories
ale nie wiem, jaka jest ich jakość, nie piszę w Javie nawet.
LukeJL napisał(a):
ale nie wiem, jaka jest ich jakość, nie piszę w Javie nawet.
Hmmmm ... nawet jakby zostawić poza głową świętą wojnę z kontenerami, wstrzykiwaniem, koniecznym do tego aspektowaniem itd, to Spring nie jest zamierzony do wygrywania konkurów pieknosci, a masowego klepania kodu wielkich aplikacji webowych
jego zamysł z latami ukszałtował się w przynajmniej dwie-trzy grupy roziwazań
a) frameworkową, czyli wyznacenie osi (kręgosłupa) koło którego apliakcja jest budowana (zostawmy kolejną św wojnę frameworki vs biblioteki **)
Ale przyjmijmy, mógłby to być jakiś dobrze (?) zaplanowany framework
b) biblioteczną, tu nasuwają mi się XxxxxTemplate *)
, elementy mniej (wcale) nie frameworkowe, a skróty do "czynności" Czynność z Rest, czynność z JDBC, wysuwające swoje obietnice
c) maksimum dróg na skróty, dla tej produktywności w korporacyjnym klepaniu, (rzekomych) ułatwień, @JednaAdnotacjaZaKupęKodu
itd. Przywołam, jak uczymy początkujacych: metoda=jeden czasownik (a nie sekwencja czasowników ze słowami 'i')
Już samo to bardzo utrudnia zrobienie tego Clean Code czysta libka z jedną dziedziną, to miód przy takim splocie
*)
milion lat temu, jak nie było szerokiego rynku maperów obiektowo-relacyjnych, miałem nieszczęście wspierać decyzję do desktopowej apki ... no jak zmapujemy ... no to JdbcTemplate (bo piszą o tym dobrze). Jak to pociagnęgło pierdyliard zaleznosci, z aspektami, najwdziwneijszymi zreczami - powinno dać do myślenia - ale kontunuowaliśmy. na szczęście projekt wykonał swoją rolę, po latach poszedł w odstawkę, ale nigdy tego błedu juz nie popełniliśmy. Tym niemniej "bibliooteka" dość dziwna.
**)
chyba największą winą wszelkich frameworków jest to, że obiecują izolację od abstrakcji niższych, ale im te abstrakcje wyciekają / albo coś uniemożliwiaja
Pomijając śmieszki innych użytkowników. Będzie Ci bardzo trudno znaleźć kod, który jest czysty i oparty na spring boot i hibernate - a to z tego powodu, że te dwie zależności bardzo utrudniają pisanie czystego kodu. Od kiedy pracuję, to usilnie próbuję napisać coś, co będzie miało znamiona czystego kodu w tychże technologiach dalej mi się nie udało (nie sądzę, żeby to było w ogóle możliwe).
Jeśli uda ci się coś takiego znaleźć, to podeślij - bardzo chętnie zobaczę
@Miłosz Siwiec: Wg. mnie z tego się można bardzo dużo nauczyć. Kod jest dobry, ale co najważniejsze jest dużo opisu dlaczego tak a nie inaczej. https://github.com/ddd-by-examples/library
Oczywiście można się kłócić / śmiać że DDD. Tutaj ludzie bardzo różnie do tego podchodzą. Że te agregaty paskudne są, albo że adnotacje użyte czy coś. Że w wielu miejscach kod ma wiecej niż 3 linijki w metodzie i uncle bob jest zawiedziony. Ale myślę że jak produkcyjnie byś się z takim spotkał w pracy to miałbyś wiele szczęścia I są też elementy w których kod jest nie tylko czysty ale i pragmatyczny.