Darbas

Programavime yra keli svarbūs dalykai, kurių laikytis yra tiesiog privaloma, tačiau nemažai programuotojų jų nesilaiko vien tik dėl per mažo žinių kiekio. Nežinau kodėl neretas programuotojas neskaito teorinės medžiagos, o tik skuba kuo greičiau daryti veikiančias programas - galbūt tai kyla iš to, kad iš programuotojų beveik visada reikalaujama galutinio produkto, o laiko gilinti žinias ne visada lieka. Labai naiviai tikiuosi, kad žemiau sekančios mintys padarys įtaką bent vienam būsimajam programuotojui ir jis nepuls daryti žemos kokybės programų.

Logiškumas

Kadangi dažnas kodas yra sudarytas iš daugybės tūkstančių eilučių, tai labai svarbu programuoti taip, kad kodas galėtų būti skaitomas lyg knyga ar straipsnis. Nežinau tokios programavimo knygos, jei kas jas vis dar skaito, kuri nepradėtų nuo skatinimo naudoti aiškius ir konkrečius kintamuosius, komentarus ir įvairią kodo įtrauką. Toks patarimas yra brukamas ne veltui, nes tvarkingai parašytas kodas yra žymiai lengviau skaitomas ir suprantamas, o ir pačiam programuotojui vėliau gali kilti problemų vien tik dėl to, kad jis nebe supras ką daro konkreti kodo vieta. Tokie kintamieji, kaip $a, $pn, $sxy, $ty iš esmės nieko nesako, nes pavadinimai nesusieti su jokia logiška reikšme. Juk akivaizdu, kad kintamojo vardas $puslapio_numeris yra žymiai lengviau suvokiamas nei $pn. Tapati situacija ir su funkcijų vardais - asrt(), h() ir panašūs vardai nieko nereiškia, o pavadinus funkcijas ascending_sort() ir heap() paskirtis iškart žinoma. Tiesiog nesistenkite visko darykite kuo sudėtingiau - paprastumas ir tik paprastumas suteikia kodui lengvumo skaitant, o perdėtas visko iškraipymas tik trukdo programuojant. Jei jau neišvengiate sudėtingo kodo tai bent pakomentuokite jo prasmę ir veikimo principą, nes vėliau galite ir nebe suprasti net savo skurto kodo.

Dinamiškumas

Nelanksti programa yra tinkama tik itin konkrečioje situacijoje, kuri iš esmės yra tik apribotas konkretus laiko tarpas. Kuriant programas visada reikia palikti laisvės tobulinimams, keitimams ir modifikacijoms, nes labai dažnai pradinis variantas netinka užsakovui, todėl neišvengiamai reikia atlikti pakeitimus. Dinamiškumas atsiranda naudojant konstantas, konfigūracijos rinkmenas ir kitus parametrų saugojimo būdus. Labai blogas programavimo pavyzdys - skaičius programos kode. Be abejo, be skaičių neišsiverčiama, tačiau juos reikia naudoti tik kaip konstantas arba aiškiai pakomentuoti jų prasmę, nes kai sudėtingame kode atsiranda kažkokie skaičiai, tai jų prasmės nustatymas gali labai ilgai užtrukti. Blogiausia kai programoje atsiranda neaiškūs keliai iki rinkmenų, kurie tikriausiai vedė į programuotojo kompiuteryje esančias rinkmenas, o kliento kompiuteryje juk sistemos rinkmenų struktūra nebūtinai tapati. Labai patogu iš anksto apsirašyti visus naudojamus skaičius ir reikšmes konfigūracijos rinkmenoje arba klasės antraštėje - taip visada žinosite kur ieškoti statiškų reikšmių kilmės šaltinio. Be to, vienoje vietoje surašę parametrus, galėsite lengvai manipuliuoti programos veikimo subtilybėmis.

Funkcionalumas

Labai dažnas užsakovas reikalauja kuo didesnio funkcionalumo, todėl neretai programuotojai jį sukuria „bile, kad veiktų“. Toks atmestinas požiūris gimsta iš to, kad tiesiog sukuriamos funkcijos, kurios veikia tik su konkrečiais duomenimis, o su išskirtiniais atvejais tiesiog nesusitvarko. Man labai patinka toks testavimo būdas, kai pavyzdžiui vietoje puslapio numerio įvedamas tekstas, o vietoje vartotojo vardo - daug tarpų. Programa neturi nulūžti be jokio pranešimo - programa turi patikrinti įvedamus duomenis ir padaryti tinkamas išvadas apie įvestus duomenis ir jei reikia paprašytų juos pataisyti - niekada neverta pasitikėti vartotoju. Neretai programuotojai neįvertina ir duomenų dydžio, ko pasekoje naudoja elementarius algoritmus, kurių sparta siekia net N^2, o įvedus duomenis, kurių N siekia 2^16, tiesiog nulūžta. Žinoma ne visose situacijose verta tikrinti ką įveda vartotojas, tačiau tiesiog būtina rašyti tokius algoritmus, kurie tvarkingai veiktų su visai įmanomais duomenimis - juk tam yra „unit testing“. Nereikia beatodairiškai siekti maksimalaus funkcionalumo - žymiai svarbiau yra užtikrinti, kad programa veiktų tinkamai ir stabiliai.

Solidumas

Paskutinioji dalis turi keisčiausią pavadinimą, nes nežinau kaip pavadinti rašomo kodo „brandą“ ir „svorį“. Programavime reikia taikyti „9 -is kartus pamatuok - 10-ą pjauk“ principą, nes žymiai geresnė kodo kokybė yra pasiekiama idėją subrandinus teoriškai. Neretai tenka net savaitę ieškoti optimalaus algoritmo ar duomenų struktūros, tačiau mąstymo pastangos atsiperka su kaupu, nes atsisėdus rašyti kodo, jis tiesiog vienu prisėdimu parašomas nuo pradžios iki galo. Anksčiau atsisėsdavau prie kodo rengyklės ir vis bandydavau įvairius sprendimus, tačiau ilgainiui pastebėjau, kad tai yra beprasmiška, nes iki galo nesugalvotas algoritmas yra žymiai ilgiau rašomas, nei prieš tai sugalvotas vien tik dėl to, kad programuojant reikia įvertinti ir kalbos subtilybes, kas neretai atima nemažai laiko. Tai patarimas, kuris ne vienam gali nepatikti vien dėl įpratimo, tačiau mano manymu geriau neskubėti - teisingi sprendimai gali pareikalauti nemažai laiko, bet jie bus iki galo teisingi ir optimalūs, nei atmestinai ir nepamąsčius suręstas kodas. Blogiausia, kai paskubomis padarytas kodas taip ir lieka nesutvarkytas, o jame atrastos klaidos tampa sunkiai ištaisomos.

Tai dar vienas straipsnis labiau orientuotas į pradedančiuosius, nes labai tikiuosi, kad Lietuvos profesionalūs programuotojai dirba tinkamai. Nemanykite, kad teorinės žinios yra bevertės ir praktinė patirtis yra žymiai svarbesnė - be gero teorinio pagrindo, jūsų patirtis ir žinios visada liks tik paviršutiniškos; nemanykite, kad pirmieji knygų skyriai parašyti be reikalo ir juos galima tiesiog praversti. Galiu patikinti iš savo patirties, kad išmokus daugybę dalykų teoriniame lygmenyje, programos rašosi žymiai lengviau, nes daug kas tiesiog tampa natūralu ir nereikia leisti valandų analizuojant kaskur „ateina“ ir kodėl būtent false. Sėkmės!

RSS Patiko ką perskaitei? Užsiprenumeruok RSS srautą ir visada gauk mano naujausius įrašus pats pirmas! Tai ne tik, kad yra be galo patogu, tačiau ir leis tau nepraleisti nei vieno mano įrašo. Jei kiltų problemų - rašyk.

--!>