Muze se clovek naucit slusne vyvijet software (schvalne pisu vyvijet software a ne jen programovat) v Jave, kdyz nema nikoho kdo jej muze mentorovat? (at uz v praci nebo ve skole).
"Slusne vyvinuty software" je podla mna nedobra definicia. Z jednoducheho dovodu, ze je to subjektivne hodnotenie zavisle na kontexte. Vysvetlim na extremnom priklade.
Napr. taky Jake2 (port Quake2 do Javy) je podla vsetkeho uber-neslusny, pretoze su tam porusene vsetky zakladne principy "dobreho java programovania", t.j. encapsulacia cez gettery/settery, znasilnene staticke fieldy a metody, nazvy metod a fieldov (skoro ziaden CamelCase), pomaly ziadne asserty atd. Napriek tomu Jake2 funguje... Preco je ten kod taky hnusny? Pretoze je to port z C-cka a team, ktory ho portoval, si uvedomil, ze keby ho chceli portovat "pekne javovsky", tak pravdepodobne este dnes pisu iba gettery a settery a akurat by zacinali rozmyslat, kde by sa sikol singleton a kde nejaky ten visitor... takze sa na celu tu javovsku nomenklaturu vykaslali a vacsinu riesili automatizovane s nejakymi minimalnymi modifikaciami tak, aby to bolo aspon skompilovatelne.
Obdobny problem riesil autor Mocha Dooma (port Dooma do Javy), ktory sa o svojom projekte vyjadril takto:
several concepts have been "borrowed" from Jake 2, especially regarding the methods used to port complex game C code to Java, how to map structs to classes, how to implement binary loaders etc.
Klucovy vyraz:
complex C code.
Fuguje Jake2? Funguje. Je slusne vyvinuty? Je, ved ho pisal sam Carmack. Zvladla by ho napisat bezna Java lopata (cize ja) od nuly a pekne javovsky? Nie...
Samozrejme, ked si clovek potom zoberie zdrojaky Springu, to sa cita ako krasny enterprise grade Java kod a kde tu narazite aj na poctivy WrapperHolder z 2002ho - v tomto smere JDKcko na tom nie je o nic lepsie. Ale v podstate je pri Springu dolezite, ze sami Springove komponenty su pisane s tym, ze budu mat dostupne vsetky "bells and whistles" dependency injection. Projekt, ktory nema k dispozicii Spring bude zase strukturovany a napisany inak.
Co je ale uplna hlupost je pisanie vlastneho Springu na projekte bez Springu alebo naopak, nevyuzivat DI na projekte, ktory je cely Springovy...
S mentorom ci bez, hlavne treba vela citat, citat, citat a citat.