En ugyanis Go-t irtam elotte. Meg TypeScript-et, de nem szeretnem ha ki lenne moderalva a bejegyzes ugyhogy utobbirol talan majd a megfelelo forumon ertekezem (PornHub?). Es tudjatok miily' josag a Go, az egyszeruseg szentelye, ahol minden uj verzional ott dulledezhet Rob Pike mellkasa, hogy lam, megint kisebb lett a nyelv 7 feature-rel, es ez nalunk jo dolognak szamit.
Es miily' erzes is Go-ban programot irni [1]. Ken Thompson osapam szoros alkarja villan fel lelki szemeim elott. Az igazi ferfiak nem felnek a kodismetlestol, es a state-et nemhogy szeretik, a PDP vasmagos memoriajaban[2] ebedszunetben oszcilloszkoppal kutarva elik ki esztetikai igenyeiket. Generics? Na te rohadt burzsuj, nem hagyod, hogy a nepek tomege is felviragozzon es kodot onto JRD-k [3] viragoztassak fel tarsadalmunk?! Te csak szepen formazzad, hivjad rea a gofmt-t, es ha olyat talalunk latni, hogy a dialektikus idiomatizmust mint elvet a kodod nem tiszteli, bizony elvisz majd a fekete Volga, te tomegek elnyomoja.
(lol, legit most jottem ra, hogy a Go egy sztalinista nyelv. Pedig amugy tenyleg nincs bajom vele. Mondjuk szeretetre sem ad sok okot, de utalatra sem.)
Szoval Java. Hopp letrejon egy osztaly a semmibol, state semennyi, azon felul amit a Spring megkivan. Van talan egy while meg egy if az egeszben. 200 nagyszeruen olvashato sor, 800 helyett. FlatMap nelkul, hogy senki ne mondja. Hopp egy masik implementaciora varo feature, reszekent ilyenek hullanak pennambol, ami Go utan nem kis orom:
return myOptionalArg.map(theBoolInside -> theBoolInside ? ENUM1 : ENUM2).orElse(DEFAULT_ENUM);
Es az elet szep. Csak azok a rohadt checked exception-ok ne lennenek. Bar meg lehet csinalni, hogy a 3-4 soros kifejezesedbol kiszervezed az ilyeneket dobalo lambdakat metodusokba ahol nemchecked(tm) exception-t dobsz az eredeti helyett/korul. Ezeket aztan jol osszefoghatod egy nested class-ba, ami eleg igenyes mivel nem keverednek egymassal a parent-en belul; de azert lassuk be, ez attol meg erosen boilerplate.
Mondjuk meglattam az uromben az oromot: IOException a legtobb ilyen a kodomban, azaz tipikusan az a dolog, amit ha mockolni kell, akkor pont attol mockolhato, hogy ki van szervezve. Mas kerdes, hogy egyesek szemet banthatja, ha a tesztelt osztalyon beluli cuccot mock-ol az ember. Az ezt valloknak azt tudom mondani, hogy ezesetben a method a Unit Under Test, nem az osztaly, es mivel nincs kozos state, nincs egyaltalan semmi kozuk egymashoz, ezert ez ebben az esetben elfogadhato. Valoszinuleg jobb, mint a Path es Files osztalyok statikus method-jait birizgatni ehelyett. Mondjuk en szemely szerint csak a parent altal publikalt 1 szal metodusra irnek coarse/integration test-eket. Test the interface, not the implementation.
[ ... ]
Sokmindent leirtam meg. Sokaig tanakodtam, hogy megosszam-e. Ami ezutan kovetkezett volna, annak megertesehez eleg sokat irtam a team-emrol, hogy mi hogy mukodik vagy nem mukodik, mi vezetett oda, ahol most vagyunk. Vegul ugy dontottem ez az altalam megutni kivant hangnemben egyaltalan nem, de kulonben sem professzionalis, ezert itt vege a tortenetnek. Remelem tetszett.
[1] amugy nincs bajom vele, olyan mint arkot asni. Bar vissza-visszahull nemi fold idonkent, meg nem is tul kreativ az egesz, de jol lehet szorakozni vele
[2] nemtom az volt-e neki, ne kialtsatok ki tortenelemhamisitonak
[3] csehszlovak barataim elonyben, amugy a TSZ megfeleloje
- Tomi87 blogja
- A hozzászóláshoz be kell jelentkezni
- 1040 megtekintés
Hozzászólások
Bocs, én még COBOL-Assembly (IBM360)-PL/I szentháromságon szocializálódtam, elárulnád, mit jelent itt a "state semennyi"? :)
- A hozzászóláshoz be kell jelentkezni
HZ VISSZATERT!!!!!!!!!
- A hozzászóláshoz be kell jelentkezni
És? Téged meg itt esze a fene azóta is, ahelyett, hogy dolgoznál.
- A hozzászóláshoz be kell jelentkezni
HZ hat ugy hianyoztal nekunk hol voltal?
- A hozzászóláshoz be kell jelentkezni
Szeretek ugy kodot irni, hogy ha lehet ne legyenek valtozok egyaltalan, de a konstansokbol is minden scope-ban csak annyi, amennyi oda szukseges. Olvasni talan meg inkabb, nem kell matekozni a fejedben, hogy ezen a helyen ebben az iteracioban a scope-ban levo 12 valtozonak milyen erteke van, es a konstansokat sem kell fejben tartani mivel ott van az a 2 aminek a jelenleg olvasott sornak epp szuksege van, jo esellyel ugyanazon a soron.
Raadasul ha nincs olyan, hogy van olyan adatod ami shared _es_ mutable, akkor joval konnyebb konkurrens/parallel programokat irni, de enelkul is belathato, hogy ez nem csak szubjektiv es esztetizalas, hanem a bugok jelentos reszet kikuszoboli.
Akik az imperativ paradigmahoz szoktak, azoknak persze konnyebb lehet vegigmatekozni a harom nested ciklust, ahol mindegyik mas alapjan splittel egy stringet es a legutolso kigyujti egyenkent egy kulon listaba. De hogy sokkal egyszerubb az elso split utan hivni ket flatMap-et es az eredmenyt listakent adni vissza, ha irja az ember a kodot ha olvassa, az tuti. Csak ahhoz ra kene allni egy masik paradigmara, ami sokszor nem egyszeru, a folyamatos baseline szenvedest pedig eszre sem veszi az ember egy ido utan, foleg ha mast nem is latott meg.
Mondjuk nem lenne igazsagos itt befejezni a hsz-t, altalaban latok funkcionalis megoldasokat a korulottem levok kodjaban, van itt-ott egy map vagy egy filter, vagy egy kivulrol parameterkent jott fuggveny, nevezzuk ezeket opportunisztikusnak. Azt viszont nem, hogy erre alapozva oldananak meg emberek komplett problemakat.
Amugy... (ez az "a film igaz tortenet alapjan keszult, ez lett a szereplokkel utana" resz ) a flatmap-ek eseten ra lett csapva a kezemre, hogy ez talan kicsit eros lesz nekunk. Jo, mondjuk en kerdeztem, mert van az embereknek jobb dolga is meloban, mint uj paradigmakkal ismerkedni. Team work meg minden. Vagy ez csak az "ami nem romlott el ne javitsuk meg esete", az is meglehet, es jogos is. A bejegyzesben emlegetett osztaly meg review-re var, szerintem meg a korulottem levok turokepessegen epp belul van. Legalabbis remelem, de nem lattam negativ reakciot azoktol, akik raneztek. Mondjuk a juniorunk belerakta az energiat es atragta magat rajta masfel-ket nap alatt, szoval mi baj lehet :)
Mit mondjak, ennyi Go-val toltott ido utan ki kellett adnom magambol, na :D Tudom, meg lehetne csinalni abban is, ha nagyon akarna az ember. Egyreszt annyira nem erdemes akarni, nem arra valo, masreszt valoszinuleg kaveszunetben a review-elo/olo keresztre feszitene a kavesgepes sarokban, aztan keresztestol pakolnanak be a Volga hatuljaba.
- A hozzászóláshoz be kell jelentkezni
Nekem tetszett.
- A hozzászóláshoz be kell jelentkezni
Koszonom.
- A hozzászóláshoz be kell jelentkezni