Turbūt dažnai programuojant iškyla klausimas, o kaip vadinti kintamuosius? (Dirbant rimtose firmose, būna nurodyta iš aukščiau). Taigi aš nusprendžiau pafilosofuoti kaip reiktų vadinti kintamuosius, kokius turi trūkumus vienas ar kitas pavadinimas.

  Sprendžiant programavimo galvosūkius mokyklose ar universitetuose dažniausiai gauname tokią užduotį: “Kintamąjį a padauginti iš kintamojo b ir pridėti kintamajį c” Aišku, universitete (mokykloje) tokių kintamųjų pavadinimų tikrai užtenka, padarę darbą jį atsiskaitote ir užmirštate amžiams, tačiau darant rimtesnį projektą be abejonės norėtųsi, kad tik pažvelgę į kodą suprastume kas jame vyksta, o geri kitamųjų bei funkcijų pavadinimai mums labai palengvintų darbą.

Yra dar vienas argumentas, kodėl kintamojo pavadinimas turėtų būti ilgesnis nei vienas simbolis, ty. ne a, bet pavyzdžiui aa. Įsvaizduokite tokią situaciją, kad jums kode greitai reikia surasti vietą, kur tas kintamasis panaudotas. Ką darote? Spaudžiate ctrl+F (kviečiate paiešką) įrašote kintamojo pavadinimą ir woule. Arba ne, jeigu jūsų kintamojo pavadinimas labai trumpas.

Taigi, tikiuosi jau įtikinau, kad pavadinimas geriau būtų ilgas, bet ilgis dar ne viskas, norint suprasti greičiau kodą, reikia, kad pavadinimas dar būtų ir prasmingas. Galbūt jums pavadinimas ccc pasakys, jog tas kintamasis aprašo kokį nors didžiausią sistemos vartotojo numerį, bet ar jis tą patį pasakys jūsų kolegai? Tikrai ne, todėl laikas pradėti galvoti prasmingus pavadinimus. Pavyzdžiui numeris. Štai jau mes kažką iš kintamojo pavadinimo galime spręsti, bet ar to gana? Koks tai numeris? Buto, automobilio? Gal tada geriau pavadinti butonumeris arba autonumeris? Kuo toliau į mišką, tuo daugiau medžių.

Beje, turbūt atkreipėte dėmesį į tai, kad butonumeris ar autonumeris nelabai skaitosi. O jeigu sujungus dar daugiau žodžių? Su šia problema susidūrė ir pirmieji programuotojai, tuomet jie bandė spręsti pasinaudodami minuso ženklu. Ir gavo tokius rezultatus: buto-numeris, auto-numeris. Aiškiau? Galbūt, tačiau kaip skaitant kodą tokių pavadninimų nesumaišyti su atimties veiksmu?

Vėliau atsirado kitas sprendimo būdas - naudoti pabraukimo simbolį. Ir gavosi tokie rezultatai: buto_numeris, auto_numeris.  Bet kai pagalvoji spausti shift, po to minusą… ilgai užtrunka. Arba kitaip sakant mane kaip ir kai kuriuos kitus kamuoja “tingaus programerio sindromas”. Tingūs programuotojai rado pakankamai gudrią išeitį iš susidariusios padėties - kupranugariuKaravanas (en. orgin. ). Idėja labai paprasta pirmas žodis rašomas iš mažosios o visi kiti iš didžiosos: butoNumeris, autoNumeris. Galbūt ne taip vaizdinga kaip su pabraukimo simboliais, bet sutaupoma poros klavišų paspaudimų. Beje šis rašymo būdas turi ir vieną variaciją PakeltaGalva (en. orgin. UpperCamelCase)  Tokiu atveju rašomi taip: ButoNumeris, AutoNumeris.

Ką gi jau aiškiau ar galime tikėtis daugiau? Taip, dar norėčiau paminėti Vengrišką notaciją (en. orgin. ), kurios esmė yra prie kintamojo pavadinimo jo pradžioje prijungti tipą. Tokiu atveju mes gautume: intButoNumeris - sveikojo tipo skaičius, szAutoNumeris - įnulinta simbolių eilutė(en. zero-terminated string). Iš tikrųjų kyla klausimas kokia prasmė nurodyti kintamojo tipą, jeigu kompiliatorius viską patikrina? Jokios, bet juk kintamojo tipo nurodymas reikalingas ne kompiliatoriui, o žmogui. Pavyzdžiui, tai būtų svarbu tokiose silpno tipavimo kalbose kaip PHP, tuomet galima pasitikrinti ar tikrai kintamasis, kuris turi priesagą int visada būna sveikas skaičius. O juk toks elementarus užtikrinimas sumažina spragų galimybes.

Dar vienas klausimas: kintamiuosus vadinti lietuviškais ar angliškais žodžiais? Jeigu projektas tarptautinis tai klausimų nekyla, aišku, kad angliškai. Dar girdėjau teiginį, jog angliškai pavadinti yra trumpesni. Taip, galbūt. Bet kodėl mums kartais nepabuvus patriotais ir nepavadinus kintamųjų lietuviškai? Tuo labiau, kad mums aiškumas nenukenčia, o jeigu koks nors amerikietis hakeris bandys laužti sistemą, jam tikrai bus sunkiau susiorientuoti, kurių kintamųjų informacijos jam reikia.

Tęsiant temą apie lietuviškus kintamuosius, tai šioje srityje pats didžiausias blogis yra Visual Studio . NET 2005 (neatsimenu kaip su 2003). Jie leidžia kintamųjų pavadinimuose naudoti lietuviškas raides! Įsivaizduokit pažvelgiat į kodą, o ten matote tokį kintamajį: šviežiena …

Išvados? Na, apibendrinti čia nėra ką, norėčiau pakviesti žmones, kurie dirba rimtose kompanijose pasidalinti savo patirtimi. Kaip pas jus reikia vadinti funkcijų ir kintamųjų pavadnimus?

Nuorodos:
CamelCase
Hungarian notation

Panašūs straipsniai


“Pasaka apie teisingus kintamųjų pavadinimus” komentarų: 9

  1. ernetas

    Kas yra woule? :D

  2. Viktoras

    Tas pats kas ir Eurika!!!! :)

  3. dado1945

    Tai jau tikrai, kad pasaka :) Pirmas dalykas, kurį turi padaryti žmogus atėjęs į naują kompaniją tai susipažinti su kompanijos programavimo tvarka. Tame tarpe ir stiliumi. Kurpranugariai tikrai nėra šventas gralis ir žmonės naudoja ir underscore’us.

    Pvz.: Python’o PEP-8 (http://www.python.org/dev/peps/pep-0008/) naudoja įvairius būdus. Beje Vengriškos notacijos nenaudoja ir apskritai Vengriška notacija yra blogis, nes iš esmės kertasi su literatūriniu programavimu…

  4. lizdeika

    Jo, kad pasaka tai nenuginčysi.

  5. enc

    šiaip tai ‘woule’ rašosi ‘viola’ ir tariasi ‘vuolia’ .P

  6. Al3x

    Aiaiaia….
    Jokiu lietuvisku kintamuju!
    Kai sukursite grynai lietuviska progr kalba(su C preprocesorium tai nera sudetinga) tada ir naudokites liet kintamaisiais, tai tik skaitomumui. Pvz:
    if(sviezias==false) // na kur gi cia skaitomumas?????
    if(fres==false) // cia daug geriau, skaitosi beveik kaip sakynis.

    o stai jeigu butu taip:
    jeigu(svezias==[melas|nera|ne|ar koks nors kitas zodis atitink false]) // cia jau ir sakitomumas dideja iskarto.

    Programuotojas kuris nezino anglu kalbos visada bus keliaisi metais pasenes.

  7. Al3x

    Klaidele:
    if(fresh==false) // cia daug geriau, skaitosi beveik kaip sakynis.

  8. mimcara

    if( fresh == false ) { // some stuff

    Su tarpais daug skaitomiau :-)

  9. Rimantas

    Dėl vengriško žymėjimo - man labai gaila vargšo jos autoriaus, kurio pagrindinė idėja buvo pamiršta, tiksliau, išsiskaidė į du variantus - system Hungarian apie kurį čia ir rašoma ir apps Hungarian. Mano galva, dėmesio vertas tik antras variantas.
    Daugiau:
    http://www.joelonsoftware.com/articles/Wrong.html
    http://blogs.msdn.com/rick_schaut/archive/2004/02/14/73108.aspx

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.