Gdzie znajde czysty kod do czytania?

0

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.

20

Musisz się zdecydować, czy czysty kod, czy spring boot i hibernate?

1

Takie odpowiedzi tez mnie satysfakcjonuje ale jak bym mógł prosić o rozwiniecie. Ponieważ po prostu nie rozumiem dlaczego muszę wybrać.

2

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?

0

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.

1
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

1
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

2
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?

2
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.

0

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.

1

@Miłosz Siwiec:

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.

1

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.).

0
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.

1
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

2

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ę

0

@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.

0

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