Bardzo dziękuje za wszelkie uwagi.
Co do nich:
-
StatisticsTemplate.class - Miałem tutaj rozterki co do umieszczania logiki. Wiem, że projektując typową 'warstwową' aplikację webową model powinien odzwierciedlać encje w bazie, do tego jakieś DTO, aby nie przesyłać zbędnych pól itd. Ale doszedłem do wniosku, że umieszczenie prostej metody update'ującej punkty przy dodaniu nowej karty jest jak najbardziej w porządku. Za pierwszym razem nie było w tej klasie żadnej logiki, ale zauważyłem, że poprzez pobieranie kart i wstrzykiwanie w każdym miejscu strategii liczenia kart gdzie akurat jest to potrzebne, a następnie set'towanie otrzymanego wyniku.. robi się okropny syf.
-
BlackjackPointsCalculatorImpl.class - rzeczywiście dałoby się bardziej to rozbić, aby było bardziej czytelne. Zostawiłem to w ten sposób, ponieważ SonarLint przestał się czepiać po zmianie 'pierwszej' wersji. (na początku było (OKROPNE) jedno zagnieżdzenie więcej i krzyczał, że tak nie wolno :) ). Do poprawy.
-
Player.java - racja, nie powinienem był wrzucać Setterów na wszystkie pola, mój błąd.
Ogólnie to wygląda na kod seniora przygotowującego szkolenie z Javy/ Testowania/ Guice, a nie kod Juniora: Od pewnego czasu programuje w Javie. Jest bardzo dobrze. Można by się czepiać, tak jak do każdego nietrywialnego kodu da się czepić, ale bez przesady - jest git. Testy też wygladają na sensowne.
Bardzo dobrze słyszeć, że kod się dobrze prezentuje. Co do "od pewnego czasu", to będą to jakieś 2 lata z przerwami z czego ostatni okres bardzo nie wiele pisałem, z powodu przygotowań do matury. Z tego też powodu ten projekt miał za zadanie przypomnieć sobie podstawowe rzeczy.
Dużo się uczyłem na temat wszelkiego rodzaju czystego kodu, dobrych praktyk itp., nie mam jednak prawie żadnego doświadczenia komercyjnego, nie jestem studentem (jeszcze) i osobiście uważam, że może być u mnie średnio z czystą wiedzą teoretyczną (a'ka akademicką) gdyż jestem głównie praktykiem i samoukiem.
Chciałbym się jeszcze zapytać jak to jest z tą znajomością technologii. Póki co miałem okazje pisać w: HTML, CSS, JS, Angularjs, Java , Spring, QML, w tym różne biblioteki/tool'e np. Gulp, npm, git, junit, mockito, assertj, guice, lombok, hibernate ......
W czym rzecz... osobiście uważam, że ciężko jest powiedzieć coś w stylu "Umiem Hibernate/Umiem Springa", bo zawsze się znajdzie osoba/rekruter/ktoś która udowodni nam, że tak nie jest. Czy to jakieś dzikie configi w tej technologii o których najstarsi górale nie śnili, czy adnotacje, klasy itd.
Jak dużo powinienem umieć na poziom takiego Juniora z np. Springa?
Jak się za niego brałem, nie miałem większych problemów tzn. umiem zrobić endpointy, DI/IoC też nie jest zbytnio skomplikowane, ale jak zauważyłem jak wygląda np. konfiguracja systemu logowania (spring security), gotowe springowe obiekty itp. to już sam osobiście wolałem od zera napisać najprostszy system zarządzania logowaniem (tokeny).
Wydaje mi się, że nie mogę napisać w CV, że umiem Springa jeżeli nie znam typowo springowych klas. Podobna sytuacja dotyczy takiego Hibernate'a w którym też można kopać bez końca.
No chyba, że miałbym zaznaczyć w cv/portfolio, co dokładnie umiem z danej technologii.
Co uważacie?
No i jestem ciekaw, czego od nowego pracownika Junior/Intern/Mid byście oczekiwali, na jakie umiejętności(technologie i co dokładnie) stawialibyście nacisk, wiadomo.. zależy od projektu, ale bardziej chodzi tak ogólnie.
Edit: literówka x2