Wpis z mikrobloga

Mirki z #java i #naukaprogramowania ktoś mi wyjaśni czy coś źle robię, bo dopiero się uczę i mam niezłego mindfucka xD
Na codewars robię sobie zadania - proste bo dopiero zaczynam i po wysłaniu mojej odpowiedzi która składa się z reguły z pętli/ifa albo czegoś innego prostego widzę przykładowe odpowiedzi które wyglądają tak jak ta poniżej. Czy ja coś źle robię czy po prostu poniższa odpowiedź to jest prezentacja skilla autora? Tak się robi na co dzień w firmach czy może korzysta się możliwie jak najprostszych rozwiązań?
#naukajavy #programowanie #studia #studbaza
Pobierz BrakWolnegoLoginu - Mirki z #java i #naukaprogramowania ktoś mi wyjaśni czy coś źle r...
źródło: comment_1665862803IBx2zOocQeA5xqCtWq2EsC.jpg
  • 21
via Wykop Mobilny (Android)
  • 26
@BrakWolnegoLoginu: tak się robi w firmach jak ten przykład że strumieniem. Nikt komercyjnie nie pisze kodu tak jak w Twoim przykładzie bo to się gorzej czyta. Streamy czytasz jak zdania i widzisz co robią bez głębszych przemyslen. Może Ci się wydawać że to co przygotowal ten drugi autor to jakiś super skill ale to najzwyklejsze strumienie tylko pewnie jeszcze nie miałeś okazji tego używać stąd wydaje się trudne
@BrakWolnegoLoginu: Pisze się tak, żeby kod był przejrzysty (jak na tym pierwszym zdjęciu). Polecam zgłębić się w zagadnienie strumieni, bo serio bardzo ułatwiają robotę.
EDIT: oczywiście jeżeli nie czujesz się jeszcze na siłach to chwilowo odpuść temat
@BrakWolnegoLoginu: Tak jak wyżej, nie break, a continue. Tyle że wciąż możesz ten kod uprościć do jednego ifa bez jakiegokolwiek break i continue - polecam spróbować. No i napisz sobie jakiś prosty kod testowy i sprawdzaj co zmianę czy nic nie zepsułeś swoimi poprawkami. ( ͡° ͜ʖ ͡°)

Nie polecam używania if bez klamerek, w produkcyjnym kodzie to tępię, to jest niebezpieczne. Oczywiście to jest moja opinia,
@BrakWolnegoLoginu: ctrl + alt + l

Ogólnie to szerszy temat, bo dobrze jest to odpowiednio skonfigurować pod własne preferencje albo wymogi firmy. Sprawdź tu https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html#reformat_code na początku jak to działa.

Ostatecznie chodzi o to, by kod w całym projekcie był spójnie sformatowany, niezależnie od systemu czy developera. Wtedy łatwiej go czytać i nie ma kwiatków w formatowaniu na zewnątrz (np. na repozytorium).
@BrakWolnegoLoginu: to zależy. W miejscach gdzie wydajność nie ma najmniejszego znaczenia, używa się strumieni. W miejscu, gdzie wydajność jest choć trochę istotna, użycie strumieni oraz typów opakowujących (boxed) to wydajnościowe samobójstwo. Ten kod na strumieniach używa 24 bajtów na jednego booleana, czyli 192x więcej niż faktycznie potrzeba, do tego na sprawdzenie każdego booleana robi minimum 10 wywołań wirtualnych (przez wskaźnik) - 4 razy do hasNext, 4 razy do next i
@filozof900: bo dopóki nie najeżysz pętli jakimiś break i continue w środku i nie masz dziesięciu zagnieżdżeń, to w sumie jest to kosmetyczna sprawa i z tego co widzę to ludzie zdecydowanie za dużo czasu tracą na dyskutowanie takich pierdół czy pętla czy stream na code review. Mnie bardziej razi ten Boolean i null niż to czy tam jest pętla czy stream. Na CR zadałbym pytanie a dlaczego tam w ogóle
@luky1234: teraz robimy jeden projekt low latency, ale nie w Javie a Rust. Zródła do niskopoziomowej Javy - niezły jest cały blog Mechanical Sympathy, choć niestety od dawna nieaktualizowany (na szczęście Martin robi też szkolenia). Tak, jest mało materiałów, bo w sumie robienie low latency w javie to jest trochę kopanie się z koniem. Mało kto to robi.
@Krolik: Dzięki wielkie. Właśnie się zastanawiałem jakim cudem pisze się low latency w javie, później natrafiłem na wątki, gdzie prosty kod napisany w javie działał szybciej niż w C++. W C++ da się napisać szybszy kod, ale nie jest to łatwe i tanie, więc często w javie działa to szybciej.
Z tego co sie dowiedziałem alokacje w javie potrzebuje mniej cykli procesora, monomorphic call jest szybszy niż metoda wirtualna w C++,