Malá reakcia 13.12.2016

Vcera bola jedna z prednasok skupiny Web Up, ktoru som, bohuzial, nestihol. Jeden z prednasajucich zverejnil svoju prednasku a ku nej aj priklady.

Co sa mi (ne)paci

Je super, ze sa rozbiehaju taketo prednasky a „talky“, kde sa sharuju skusenosti programatorov. Treba si navzajom pomahat a tahat sa dopredu + ak sa zucastnia nejaki studenti, o to lepsie. Uvidia na com a s cim sa pracuje v roznych firmach, pripadne sa uz mozu dopredu rozhodovat, kam by asi tak chceli ist.

To horsie

Castokrat, ked aj na nete nieco hladam, najdem postup, ktory sice vyriesi moj problem, ale uz na pohlad zlym sposobom. Samozrejme, kazdy sa uci a zdokonaluje. Jedna z moznosti je, pisat si blog alebo zdielat svoj kod ci uz na GitHub-e alebo na StackOverflow a citat reakcie ludi. Ale pokial ignorujeme „feedback“, neposuvame sa dalej a stale opakujeme tie iste chyby, nieco je zle. A zdielanim tychto zlych postupov neposuvame nasich buducich kolegov vpred ani o kusok.

Ak idem o niecom pisat, precitam k danej teme viacero clankov, vyskusam si to a po dopisani urobim „alfa test“ -> text odoslem par znamym, ktori by mi k tomu mohli dat nejake kratke „review“. Ci im text dava zmysel, ci v postupe alebo priamo v kode nevidia nejaky zadrhel a podobne.

K veci

Otvoril som si teda materialy k teme TypeScript. Presiel som do nahodneho subora mathHelper.ts a pozeram na to.

Nasledujuca podmienka je v danej triede 3x, co znamena, ze autor nepozna jeden z hlavnych principov – DRY ( Don’t Repeat Yourself ) :

if ((param1) && (is.number(param1) && (param2) && (is.number(param2)))) {

Nevadi, kod ma sluzit ako ukazka a vsetko je ok. Vyuzitie kniznice is.js mi ale tiez nepride ako najlepsi napad. Preco? Nie je to tak davno, co sa rozhodol jeden z open source programatorov stiahnut svoje moduly z NPM. Kvoli jednemu z nich, ktory nerobil nic zlozite a mal 11 riadkov padlo hodne vela projektov. Oplatilo sa pre 11 riadkov pridavat takuto zavislost? Tu je jedna z kratkych reakcii ku tejto teme.

V jednoduchosti je krasa a tu mi hned udrie do oci vsadepritomna podmienka :

if ((param1) && (is.number(param1) && (param2) && (is.number(param2)))) {
    return param1 + param2;
} else {
    throw new Error("mathHelper - add - empty or non numbers specified");
}

Ak sa mi nieco nepaci, vyhodim chybu, ak je to ok, tak len spravim co mam. Preferoval by som teda maly „code refactoring“ :

if (!((param1) && (is.number(param1) && (param2) && (is.number(param2))))) {
    throw new Error("mathHelper - add - empty or non numbers specified");
}
return param1 + param2;

Najlepsie by bolo vyhodit podmienku do vlastnej metody. Dovod? Metoda by mala robit jednu vec, tato robi dve ( zistuje ci je vstup cislo a scituje ).

A posledna vec, co sa uz netyka kodu ale temy ako takej. Ked je uz ten TypeScript taky dobry, preco po urceni typu, musim aj tak tento typ overovat? Hmm…

Ok ok ok 20.12.2016

Autor prednasky odpovedal v kratkom blogposte, kde s niektorymi pripomienkami suhlasil a s niektorymi nie. Ano, je fakt, ze z mojej strany ide len o kritiku. Je to hlavne preto, ze ked cokolvek hladam, najdem prevazne zly, zavadzajuci content. Potom tak aj nasa praca, praca programatorov, vyzera.

S tym npm si to zobral uplne zle. Nevravim, ze netreba pouzivat npm, len netreba to tlacit uplne vsade a toto bol priam ukazkovy priklad. Na tuto temu odporucam precitat clanky, na ktore som sa odkazoval, pripadne pogooglit nieco viac. Nepisem to len tak zo srandy, je to aj moja vlastna skusenost. Viacero projektov, na ktorych so mal robit, som si vyklonoval ku sebe a po npm install to ani zdaleka nebolo funkcne. Zastarale moduly, niektore uz ratali s novsimi verziami, ine uz nerobili to, co mali. Cim viac tychto modulov vyuzivas, tym viac bude projekt nachylny na podobne chyby.

Neposudzujem autora clanku, pozeram sa na pracu, ktoru zverejnil. Ano, je fakt, ze neviem kedy ju pisal, ci bol unaveny, alebo zrovna nemal nejaky dobry den. Ale v tom pripade si tychto veci musel byt vedomy a musel ratat s tym, ze sa to nemusi zrovna vsetkym pacit. Naviac prezentacia akejkolvek temy je ukazkou toho, ako ma autor prezentacie zvladnutu danu temu – teda prezentuje aj sam sema.

Este raz chcem zdoraznit, ze proti autorovi nemam nic. Nechcel som ho tymto urazit ani nic podobne. Jedna sa mi len na poukazanie na veci, ktore sa mi nepacia.

Záver

Tymto nechcem na autora prezentacie ziadno utocit – samotna prezentacia mohla byt dobra. Jedna sa mi len o to, ze vsade podhadzujeme priklady, ktore sice mozu byt k veci, ale zaroven ucia posluchacov / citatelov prehliadat tieto „nedostatky“.

Podobné príspevky

Niečo už viem a čo ďalej?

Baví ťa programovanie, čítaš knihy, blogy, tutoriály ale nemáš žiadne vlastné nápady, kde svoje vedomosti využiť alebo otestovať? Alebo sa programovaniu venuješ už dlho a chceš sa posunúť niekam ďalej? Tu je taký menší zoznam, ktorý ti môže pomôcť. Ide o niekoľko stránok, kde sú zadania na programovanie, súvisiace aj s ďaľšími vedomostami zo sveta IT. V druhej časti je niečo málo k Open Source projektom a návrhy ako sa môžeš zapojiť do vývoja.

Čítať viac

Privítanie

Prvý článok na tomto blogu a zároveň aj môj prvý napísaný článok. Snáď tieto moje príspevky / poznámky poslúžia aj niekomu inému. V tomto článku je také zhrnutie ktorým témam sa chcem venovať. Budú to hlavne veci ohladom programovania v PHP a Jave. Tiež niečo okolo databáz, návrhových vzorov a programátorských princípov. Ak by si mal nejaké pripomienky k štýlu písania alebo návrhy na témy, ktorým by som sa mohol venovať, kľudne mi napíš. Kontakt nájdeš na webe.

Čítať viac


Komentáre

dusan 21. decembra 2016 o 8:50

ahoj.
ja som ani nečakal, že sa všetkým bude páčiť, to z ďaleka nie 🙂 len ako píšeš, je to prezentácia. moja práca prezentuje mňa. a tvoj blog post a typ a tón reakcie celkový feeling z nej prezentuje teba 🙂

k npm install a outdated dependencies. to je ale predsa maslo tvorcu npm balíčka, aby si dal pozor a bol up2date. ja chápem, čo chceš povedať, nie raz som bojoval s rovnakým problémom. nie raz mi npm install písal, aby som urobil update toho alebo onoho, lebo staré balíčky majú vážne chyby, ale potom opäť switchnem na môj prípad, ak som si dotiahol jednu libku, ktorá nemá inú dependency (is.js) tak kedy sa mi stane presne toto?

ak ti nešiel nejaký sample, to je problém toho človeka, ktorý ten sample robil. naviac oprav ma, ak sa mýlim, ale npm používa semver, takže kedy sa ti môže stať, že ti tá ktorá sample app nepôjde? to potom bude asi problém v npm balíčkoch, ktoré ten ktorý človek použil. zrejme sa buď neriadia princípom semver alebo niekto niečo slušné pokašľal. každopádne by som natvrdo v package.json nastavil verzie a skúsil tak. aby som bol na presnej verzii ktorú ten človek použil.

nepoužívaním balíčkov sa síce odstrihneš od dependencies, na 2 stranu robíš blbosť v tom, že nereusuješ už napísaný kód. to je ako nepoužívať dedičnosť, alebo čo si mi vytkol DRY princíp. len tu je to voči kódu ktorý používa milión ľudí a má milión testov (napr. jQ).
poznám pár ľudí, ktorý razia túto cestu a je schodná, ak máš nekonečno času na projekt. čo nieje môj prípad. takže ak chceš reinvent the wheel style na každom projekte, why not.

dušan

liero 17. februára 2017 o 18:19

teda, nebol som na prednaske, ale kedze predpokladam ze bola o typescripte, a nie o libkach, alebo dependencies, pride mi cela tato kritika odveci. Navyse bola silne „opinion-based“. Jedina poznamka k veci bola „Ked je uz ten TypeScript taky dobry, preco po urceni typu, musim aj tak tento typ overovat?“, ale nieje mojim cielom teraz na nu odpovedat.

Inak povedane, keby si to nepisal v kontexte tej prednasky, ale napisal by si si blog, kde by si pouzil tieto priklady, ok. Ako kritika prednasky to u mna neobstalo.

admin 17. februára 2017 o 19:42

Ale „that’s the point“! Nech je ta prednaska o comkolvek, ale material ku nej ma byt dobry. Ak napisal takyto kod na tabulu, ukazal to ostatnym, OK. Ak to hodil na GitHub, ze aha ako sa to robi, tak pardon, ale to nie. To je presne to o co mi slo, kopec ludi sa asi ospravedlnuje tym, ze sak nepisali o „srackach“ kolo toho, ale len o jednej konkretnej veci. Potom ano, neskuseny programator si povie „Aha, ten TypeScript je pecka!“ a spolu s tym prevezme aj tie zvysne sracky.

Pozeral som materialy ku Express.JS a vies ako vyzeraju? Takto urobite GET, takto urobite POST, vsetko natlacene v jednom subore. Spolupracujem na jednom projekte a index.js ma 7k riadkov. Necudujem sa, lebo na to aby si spravil nieco poriadne, musis vyhladat ako pracovat s Express.JS, ako rozdelit routy do viacerych suborov, ak to ma byt REST, ako maju vyzerat taketo URL adresy a pod. Ale bohuzial, k tomu sa uz vacsina ludi nedostane a potom to vyzera tak „Aha aky mame REST server“ a url adresa /getNejakaBlbina. WTF?

Takze zastavat si nieco, ze sak to bolo len o TypeScripte je blbost. Moze to byt o comkolvek a aj nepodstatne veci okolo toho mozu odrazat nejake good practices.

Pridať nový komentár