Man irgi keistokai pasirodė sliekų ieškojimas ant asfalto. Bet, aišku, galėjo kokį įmantresnį palikti, tipo <!-- Hello, stranger! What are you doing here? ( ͡° ͜ʖ ͡°) -->
+1
Užsiregistravo: 2009-06-28, 02:39 Pranešimai: 4991 Miestas: Vilnius
Šiaip jau profai koderiai turi bent minimalų review procesą. Jeigu šitas kodas praėjo 4-5 poras akių, kol gavo teisę nusileisti į Realease branch'ą, tada klausimas, ar toje kontoroje apskritai kas nors kerta, ką daro.
Jokia save gerbianti komercinė įstaiga tokio teamlead'o nelaikytų, o čia kvepia pigiu lėšų įsisavinimu.
Viena komercinė senior developerio valanda kainuoja kokius 50-100€. Aišku, valstybei tokie įkainiai nesuprantami: užtat ir matome tokį kodą kaip Math.between per pusę puslapio.
Nikulinas sakydavo „eik pasitreniruoti su katytėm“. Dabar pirmąjį if'ą būsimieji chaltūrščikai sukodina pagal valstybinį užsakymą. Way to go...
Šiaip jau profai koderiai turi bent minimalų review procesą. Jeigu šitas kodas praėjo 4-5 poras akių, kol gavo teisę nusileisti į Realease branch'ą, tada klausimas, ar toje kontoroje apskritai kas nors kerta, ką daro.
Jokia save gerbianti komercinė įstaiga tokio teamlead'o nelaikytų, o čia kvepia pigiu lėšų įsisavinimu.
Viena komercinė senior developerio valanda kainuoja kokius 50-100€. Aišku, valstybei tokie įkainiai nesuprantami: užtat ir matome tokį kodą kaip Math.between per pusę puslapio.
Nikulinas sakydavo „eik pasitreniruoti su katytėm“. Dabar pirmąjį if'ą būsimieji chaltūrščikai sukodina pagal valstybinį užsakymą. Way to go...
O ką aš tau seniau sakiau... Reikia gi ir "naujajai kartai" pasireikšti. Tad pasimėgaukim bent jau tais metodais kaip jie "stato pasaulį" Nors iš dalies tai primena man ir mano paties "pradedančiojo programavimą" (prieš n metų): veikia, tik dar nesupratau kodėl
+1
_________________ O tai ir šiukšlių dėžėj tvarką reikia palaikyt?
kestutiz, paprastai validavimo funkcijai max(a,min(v,b)) arba if(v<a){v=a};if(v>b){v=b} arba dar kokiam panašiam užrašymui reikia funkcijos globaliame Math prototipe? Komentarų "jeigu a mažiau nei b, tai grąžinam a; priešingu atveju b"? Čia kelintas laboras? Nulis kablelis pirmas? Nuo to ir prasideda freimvorkai, kai kontoros prisisamdo programerių, be zagatovkių nesugebančių net užpakalio nusišluostyt.[*]
O tavo nurodytas straipsnis, tiesą sakant, OT. Nesąmonė naudoti sudėtingus įrankius paprastiems dalykams, čia ir ežiukui aišku. Tačiau, jei imiesi projekto, kuriame grynas programavimas užtruks, tarkim, 12 grynų mėnesių 5 grynų programerių komandai, tai numatai atitinkamai kažkiek mėnesių analizei, deryboms, projektavimui, specifikacijoms, QA, CI, kodo kontrolei ir vieną kartą susisetupini visą infrastruktūrą su IDE, testavimo serveriais, backupais, kad paskui nereikėtų ieškoti ad-hoc sprendimo paskutinę naktį.
Savo ruožtu, IT development įmonės didžiausias privalumas yra įdirbis ir patirtis. Nesiimi projekto srityje, kurioje neturi patirties. Neimi pačių naujausių freimworkų, kol jų neišbandei vidiniuose žaisliniuose projektuose. Freimworką paslepi po tinkama abstrakcija, kad kiekvienam nereikėtų mokytis naujų sintaksės ir semantikos gotchų. Pasirūpini, kad komandoje būtų bent du techniniai žmonės, atsakingi už tos posistemės integraciją ir abstrakciją, tą dalyką žinantys tobulai ir prisiimantys visišką atsakomybę. Visus išpręstus klausimus dokumentuoji wikyje, bugziloje, API dokumentacijoje, stiliaus giduose, regresijos testuose... Esmė ta, kad parašyti HelloWorld užtrunka ilgai, bet tai daroma vieną kartą, kruopščiai ir iki paskutinio bito apgalvotai – o ne taip, kaip šauna į galvą naujai keptam nuo paskaitų nusimuilinusiam juniorui.
Tarkim, su Scala, Clojure, Kotlinu, Typescriptu laisvalaikiu dirbu N metų, bet nematau jokių prošvaisčių jiems savo dabartiniuose komerciniuose produktuose. Jei developeris tingi įvaldyti IDE ir sugeneruoti sorsą nepraleidžiant skliaustų, exceptionų, deklaracijų – tai joks kompiliatorius jo minčių nesugebės įminti. Tuo labiau, kai ateina bugfixo patch'as, niekas nenori skaityti šaradų ir laukti porą valandų viso projekto kompiliavimui. Jeigu programeris nesugebėtų pats parašyti tokios funkcijos, kurią naudoja, vadinasi – jis nėra kvalifikuotas ją naudoti. Ir priešingai: jis turi džiaugtis, kad tos funkcijos nereikia rašyti ir laužyti pačiam bei melstis arkangelams, kad ji tikrai veikia kaip numatyta.
Ūkiškas kodas gerai, bet jei jis painiojasi ne vietoje, tada kažkam verta pasiimti laisvadienį ir grįžti prie dokumentacijos skaitymo. Dviračio išradinėjimas jokios naudos neduoda, tik balamutina ir nukreipia dėmesį nuo sprendžiamos problemos – kaip ir sudėtingų API naudojimas ne vietoje. Jeigu programos būtų rašomos kompams, tai rašytume mašininiu kodu, o sorsai yra skaityti žmonėms.
[*]– anaiptol neteigiu, kad visur vietoje Math.between reikia rašyti max(a,min(v,b)). Jeigu toks patikrinimas (būtent patikrinimas, ne paslėpta klaidingų inputų korekcija!) naudojamas keliose vietose, tuomet yra prasmės išskirti validavimo funkcijų biblioteką, su atitinkamais pavadinimais, nešiukšlinant į globalų namespace, tinkamai dokumentuojant (ir be pilstymų, ką EcmaScripte daro if išraiška). Bet paaiškinkit man durnam: kada toks validavimas turi prasmę? Klaidingi duomenys iš kito kodo? Tai, blyn, jie ir turi būti pagauti ten, iš kur atėjo, lokalizuojant problemą, o ne ją atidedant. Vartotojas bandė įvesti 2016, bet įvedė 2061, kai maksimali reikšmė pagal speką 2030? Iš kur žinai, kad ją reikia taisyti į 2030, o ne 2016 ar 2011 ar 2006? Iš kur vartotojas žino, kad sistema priėmė jo įvestus duomenis, bet ne tokius, kokius jis suvedė? Toliau: jei programeris A ir programeris B nori tokios pačios funkcijos – iš kur B žino, kad A jau tokią turi? Iš kur jis, neskaitydamas sorso, žino, ką šiame kontekste reiškia žodis „between“? Kad tai ne predikatas „is v between a and b“, o veiksmas „adjust value of v to range“; kodėl viena sąlyga if'e yra <=, o kita tik <? Po velnių, jeigu value gali būti bet kokia nelegali reikšmė, tai kur patikrinimas, kad ji apskritai yra skaičius? Kodėl reikšmė „true“ yra tarp 0 ir 2? Kaip dėl reikšmės NaN, jeigu vartotojui tiesiog susipynė pirštai ir jis nukopipeistino su tarpo simboliu – užsiskaito NaN, ji eina į duombazę?
Paskutinį sakinį siūlau perskaityti dar ir dar kartą. Jau geriau nebūtų apskritai jokio tikrinimo, ir sistemai būtų leidžiama nulūžti iškart pastebėjus kliurką, nei į DB tyliai įsileisti „atseit“ patikrintas reikšmes. Ką tokioje duomenų validumui jautrioje sistemoje kaip Sodra veikia testuotojai? Negi kontoroje nėra nors vienos asabos, žinančios Ecmascript Number tipo rėžius?
Bottom line: bent jau komentarai, ką atlieka konkretus „if“, nemeluotų! O tai ir aš iš pradžių nepastebėjau, kad yra neteisingų reikšmių, praeinančių testus! Taip pat ir serversaide, žr.:
nashorn> "10 a"<2010 false nashorn> "10 a">2016 false nashorn> Number("10 a") NaN nashorn> typeof NaN "number"
Keiksmažodis kode - vajei, kaip blogai. Eikime paverkti. Kita vertus, mane labiau stebina, kodėl kodas produkcinėje sistemoje - nėra minifyintas.
rwc rašė:
Šiaip jau profai koderiai turi bent minimalų review procesą. Jeigu šitas kodas praėjo 4-5 poras akių, kol gavo teisę nusileisti į Realease branch'ą, tada klausimas, ar toje kontoroje apskritai kas nors kerta, ką daro.
Vargu ar apskritai Lietuvoje yra įmonių, kuriose kodas dirbant su tokio tipo sistemomis, kaip SoDros IS, kas nors peržiūri tą patį kodą 4-5 kartus. Bet čia matosi, kad neperžiūrima nei 1 karto.
rwc rašė:
Viena komercinė senior developerio valanda kainuoja kokius 50-100€. Aišku, valstybei tokie įkainiai nesuprantami: užtat ir matome tokį kodą kaip Math.between per pusę puslapio.
Tikrai nereikia mokėti 100 eur, kad būtų prisilaikoma šiokių tokių standartų. Toks kodas, kokį čia matome - parašytas gal pusę metų patirtį turinčio asmens. Su metų patirtimi tikrai Math prototipo nekeistų.
rwc rašė:
Jeigu programeris nesugebėtų pats parašyti tokios funkcijos, kurią naudoja, vadinasi – jis nėra kvalifikuotas ją naudoti. Ir priešingai: jis turi džiaugtis, kad tos funkcijos nereikia rašyti ir laužyti pačiam bei melstis arkangelams, kad ji tikrai veikia kaip numatyta.
Ką reiškia sugebėtų, ar nesugebėtų... Per 15 min gal ir nesugebėtų, o per dieną sugebėtų - tai jau galima naudoti tą funkciją, ar ne?
rwc rašė:
Ūkiškas kodas gerai, bet jei jis painiojasi ne vietoje, tada kažkam verta pasiimti laisvadienį ir grįžti prie dokumentacijos skaitymo. Dviračio išradinėjimas jokios naudos neduoda, tik balamutina ir nukreipia dėmesį nuo sprendžiamos problemos – kaip ir sudėtingų API naudojimas ne vietoje. Jeigu programos būtų rašomos kompams, tai rašytume mašininiu kodu, o sorsai yra skaityti žmonėms.
Tikrai taip. Pasitaiko tokių, kurie mėgsta paprastus dalykus daryti kuo sudėtingiau - įvairūs design patternai ir t.t., nors tai tikrai nėra būtina ar naudinga. T.y. naudoja ne tai, kas reikalinga, o tai, ką sugeba.
rwc, mūsų valstybė tikrai labai daug išleidžia softo projektam. Kai kurie vis dar procese dešimtmetį, išleisti šimtai tūkstančių, o rezultatai susukti stumbro dėžutėse. Na arba tokiuose koduose
rwc, mūsų valstybė tikrai labai daug išleidžia softo projektam. Kai kurie vis dar procese dešimtmetį, išleisti šimtai tūkstančių, o rezultatai susukti stumbro dėžutėse. Na arba tokiuose koduose
Vartotojai naršantys šį forumą: Registruotų vartotojų nėra ir 15 svečių
Jūs negalite kurti naujų temų šiame forume Jūs negalite atsakinėti į temas šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite trinti savo pranešimų šiame forume