Gdzie znajde czysty kod do czytania?

Gdzie znajde czysty kod do czytania?
Miłosz Siwiec
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:4
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.

edytowany 1x, ostatnio: Riddle
Yarilo
troche już siedze w branży ale takiego nie widziałem.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
20

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


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
LukeJL
Zaintrygowałeś mnie - co jest nie tak ze spring boot i hibernate?
Miłosz Siwiec
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:4
1

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

S4
To tak jakbyś próbował zrozumieć kobietę.
marcyse
  • Rejestracja:około 4 lata
  • Ostatnio:6 miesięcy
  • Postów:76
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?

_13th_Dragon
Jeżeli może być film animowany zamiast książki - to Love, Death & Robots - z tym że fiony i shreka raczej tam nie ma, aczkolwiek 3-go sezonu jeszcze nie oglądałem.
piotrpo
Zaproponowałbym biografie kilku polityków.
_13th_Dragon
@Piotro +1 Nawet fiona ze Srekiem tam się znajdą :D
Miłosz Siwiec
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:4
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.

ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 1x, ostatnio: ZrobieDobrze
jarekr000000
Czy trzeba całego youtube przejrzeć? Dużo tego...
ZD
Polskojęzyczna sfera springa ... zaledwie 100-200 filmów
ZD
Ciekawe czy w ogóle/jak pacjent szukał podstaw n/t
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
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?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Xarviel
Ostatnie zdanie jest raczej nieprawidłowe... Przeglądam cudzy kod -> trafiam na fragment, którego nie rozumiem -> sprawdzam w różnych źródłach co oznaczają te rzeczy -> dowiaduje się czegoś nowego -> robię jakiś tam progres -> i finalnie uczę się przeglądając cudzy kod
_13th_Dragon
Czyli uczysz się z "różnych źródeł" a nie z oglądanego kodu, ba nie musi to być nawet dobry kod efekt będzie ten sam.
YA
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 7 godzin
  • Postów:252
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.

Miłosz Siwiec
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:4
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.

O2
Wydaje mi się, że pisząc w tej sprawie na forum uderzasz głową w mur, bo jak widać każdy się mądrzy, ale nie jest w stanie wskazać projektu, na którym można się wzorować i czerpać z niego dobre praktyki. Tacy są tu specjaliści na forum. Większość tu pisze spaghetti szajs. Wpisz sobie w google technologie i np. example project github, best practice i może coś znajdziesz.
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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.


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 13 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10055
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.).

edytowany 3x, ostatnio: Riddle
ZD
Libek z clean code wskaże więcej, zdecydowanie. Zwłaszcza jak libka jest w jednej dziedzinie jest to łatwiejsze (regex vs multi-kulti np Guava)
wiciu
To teraz masz już fundamenty. Czas przejść na javę.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:22 minuty
  • Postów:8398
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.


ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 2x, ostatnio: ZrobieDobrze
TY
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 lata
  • Postów:204
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ę

orchowskia
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Zielona Góra
  • Postów:83
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.

edytowany 1x, ostatnio: orchowskia
ZD
"kod jest nie tylko czysty ale i pragmatyczny" podoba mi się to widzenie
MM
  • Rejestracja:około 8 lat
  • Ostatnio:około 11 godzin
  • Postów:12
0

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)