Redikova konvencija za dodeljivanje imena, verzija 6
Namera Redikove konvencije za dodeljivanje imena (Reddick VBA, RVBA) jeste da ponudi smernice za dodeljivanje imena objektima u jeziku Visual Basic for Applications (VBA). Postojanje konvencija značajno je u svim programskim projektima. Kada ih koristite, ime objekta sadrži i informacije o značenju objekta. Ove konvencije su pokušaj standardizovanja značenja za celu zajednicu VBA programera.
VBA deluje unutar matične aplikacije - na primer, Microsoft Access, Microsoft Visual Basic, AutoCAD i Visio. RVBA konvencije se odnose na sve implementacije jezika VBA, bez obzira na matičnu aplikaciju. Neke od oznaka opisane u ovom dodatku ne moraju uvek da važe u okviru odre?enog matičnog programa za VBA. Reč objekat, kada se koristi u ovom dodatku, odnosi se na proste promenljive i VBA objekte, kao i na objekte koje na raspolaganje stavlja matični program u okviru koga deluje VBA.
Iako sam ja urednik ovih konvencija, one predstavljaju rad mnogih ljudi, uključujući i È;arlsa Simonjija (Charles Simonyi), koji je autor ma?arske konvencije koja je osnova ovih konvencija, i Stena Lezinskog (Stan Leszynski), koji je koautor nekoliko verzija konvencija. Mnogi drugi, isuviše brojni da bi mogli da budu pomenuti, tako?e su doprineli razvoju i širenju ovih konvencija.
Ove konvencije predstavljaju samo smernice. Ako se ne slažete sa nekim njihovim delom, zamenite ga onime što smatrate da je bolje. Ipak, vodite računa da će buduće generacije programera morati da razumeju te izmene i postavljajte komentare u zaglavlja modula koji će opisivati učinjene izmene. Konvencije su predstavljene bez objašnjavanja razloga koji su doprineli njihovom razvoju, iako iza svake od ovde predstavljenih ideja stoji prilično duga priča.
RVBA konvencije zasnivaju formiranje imena objekata na ma?arskoj konvenciji (ona je dobila ime po domovini svog autora, È;arlsa Simonjija). Svrha ma?arske konvencije je da sažeto i efikasno prenosi informacije o objektima. Ma?arska konvencija zahteva odre?eno vreme za privikavanje ali, kada se jednom naviknete na nju, ona postaje deo vašeg načina razmišljanja. Format za ma?arsku notaciju izgleda ovako:
Uglaste zagrade ukazuju na neobavezne delove imena objekta. Komponente imena imaju sledeće značenje:
Uočite da je oznaka jedini obavezni deo imena objekta. To može da deluje nelogično; može vam se činiti da je najvažniji deo imena objekta OsnovnoIme. Me?utim, uzmimo kao primer generičku proceduru koja radi sa nekim obrascem. Bitna je činjenica da procedura radi sa obrascem, a ne ono što obrazac predstavlja. Pošto procedura može da radi sa različitim vrstama obrazaca, OsnovnoIme vam nije uvek neophodno. Me?utim, ako rutina referencira više od jednog objekta odre?enog tipa, neophodno vam je OsnovnoIme za sve njih, osim jednog, kako biste mogli da ih razlikujete. Tako?e, OsnovnoIme prenosi informacije o promenljivoj, osim ako rutina nije generička. Promenljiva bi, najčešće trebalo da sadrži i OsnovnoIme.
Oznake se koriste za opisivanje tipa podataka objekta, a formiraju se na načine opisane u sledećim odeljcima.
Oznake navedene u tabeli A.1 možete da koristite za VBA vrste podataka. Umesto obj možete da koristite odre?ene oznake za svaku vrstu podataka koju definiše matična aplikacija ili neki od njenih objekata. (Pogledajte odeljak "Matične aplikacije i nastavci imena komponenata u konvencijama" kasnije u ovom poglavlju).
Trebalo bi eksplicitno deklarisati sve promenljive, svaku u zasebnom redu. Nemojte koristiti zastareli način deklarisanja promenljivih, pomoću odre?enih znakova kao što su %, & i $. Oni su suvišni ako koristite konvenciju za dodeljivanje imena, a pored toga, za neke vrste podataka ne postoje odgovarajući znaci, kao što su, na primer, promenljive logičkog tipa. Trebalo bi da uvek eksplicitno deklarišete sve promenljive tipa Variant pomoću odredbe As Variant, iako je to podrazumevana vrsta podataka za VBA. Na primer:
Svojstva klase predstavljaju problem. Treba li da se pridržavaju konvencije za dodelu imena tako da njihova imena ukazuju na tip objekta? U cilju konzistentnosti sa ostatkom konvencije za dodelu imena - da, treba. Ipak, dozvoljeno je koristiti imena svojstava bez oznaka, posebno ako se klasa stavlja na raspolaganje korisnicima kojima nisu bliske ove konvencije.
Objektu tipa kolekcija treba dodeliti zasebnu oznaku. Oznaku formirate pomoću tipa podataka kolekcije iza kog dolazi slovo s. Na primer, ako imate kolekciju podataka tipa Longs, oznaka bi bila lngs. Ako je u pitanju kolekcija obrazaca, kolekcija bi imala prefiks frms. Iako, teoretski, kolekcija može da sadrži objekte različitih tipova podataka, u praksi se svaka kolekcija sastoji od stavki istog tipa. Ako u kolekciji želite da koristite različite tipove podataka, koristite oznaku objs. Na primer:
U jeziku VBA konstante uvek imaju odre?eni tip podataka. Pošto VBA sam bira tip podataka, kada ga ne zadate, trebalo bi uvek da zadajete tip podataka za konstantu. Konstante deklarisane u odeljku General Declarations modula uvek treba da sadrže ključnu reč koja opisuje njihov opseg vidljivosti, Private (privatne) ili Public (javne), i da kao prefiks imaju jedan od prefiksa za opseg m ili g. Konstanta se označava dodavanjem slova c na kraju oznake tipa podataka konstante. Na primer:
Const intcSivaBoja As Integer = 3
Private Const mdblcPi As Double = 3.14159265358979
Iako se ova tehnika preporučuje za formiranje imena konstanti, ako vam je važnije da znate da se radi o konstantama nego koji su njihovi tipovi podataka, kao alternativu možete da koristite generičku oznaku con. Na primer:
Imena stavki menija treba da ukazuju na njihov položaj u hijerarhiji menija. Sve stavke menija bi trebalo da imaju oznaku mnu, a OsnovnoIme bi trebalo da ukazuje na mesto stavke u hijerarhiji. Da biste ukazali na liniju razdvajanja, u OsnovnoIme stavite naziv Sep praćen rednim brojem. Na primer:
mnuFileNew (na iskačućem meniju File)
mnuFileNewForm (na padajućem meniju File New)
mnuFileNewReport (na padajućem meniju File New)
mnuFileSep1 (prva linija razdvajanja na iskačućem meniju File)
mnuFileSaveAs (na iskačućem meniju File)
mnuFileSep2 (druga linija razdvajanja na iskačućem meniju File)
mnuFileExit (na iskačućem meniju File)
Formiranje novih tipova podataka
VBA pruža tri mogućnosti za formiranje novih tipova podataka: nabrojane (engl. enumerated) tipove podataka, klase (engl. classes) i korisnički definisane (engl. user-defined) tipove podataka. U svakom slučaju, moraćete da izmislite novu oznaku za tip podataka koji formirate.
Grupe konstanti tipa Long trebalo bi da čine nabrojani tip podataka. Izmislite oznaku za tip, dodajte slovo c i zatim definišite nabrojane konstante koristeći tu oznaku. Pošto se ime koje se koristi u naredbi Enum vidi u Object Browseru, oznaci možete dodati OsnovnoIme kako biste objasnili skraćenicu na koju ukazuje oznaka. Na primer:
OsnovnoIme bi trebalo da bude u jednini, što znači da u ovom primeru nabrojani tip podataka treba da se zove grcVrstaGreske, a ne grcVrstaGresaka. Oznaku koju smislite za nabrojani tip podataka zatim možete da koristite za promenljive koje mogu sadržati vrednosti tog tipa. Na primer:
Private Sub Primer(ByVal grTekucaGreska As grcVrstaGreske)
Iako VBA omogućava nabrojani tip grupa samo sa stavkama tipa Long, moguće je napraviti i grupe konstanti koje imaju druge tipove podataka. Formirajte skup definicija konstanti koristeći oznaku koju ćete sami izmisliti. Na primer:
Public Const grcGreska205 As String = "Neprihvatljiv tip podataka"
Public Const grcGreska206 As String = "Vrednost izvan dozvoljenog opsega"
Nažalost, pošto na ovaj način ne pravite nov tip podataka, nećete uživati prednosti koje nudi VBA prevodilac kada proverava tip podataka umesto vas. Promenljive koje će sadržati konstantne vrednosti pravite koristeći sintaksu sličnu promenljivama koje treba da sadrže instance nabrojanih tipova podataka. Na primer:
Klasa je "šablon" za objekat koji je definisao korisnik. Pošto on uvodi novu vrstu podataka, moraćete da uvedete novu oznaku za objekat. Oznaci možete dodati OsnovnoIme kako biste objasnili skraćenicu na koju ukazuje oznaka. Korisnički definisani tipovi podataka smatraju se jednostavnim klasama koje imaju samo svojstva, ali se u svakom drugom smislu koriste kao moduli klasa. Na primer:
Promenljive koje će sadržati instance klasa definišete koristeći istu oznaku. Na primer:
Dim kupSledeci As New kupKupac
U jeziku VBA naredba Implements se koristi za izvo?enje klasa iz osnovne klase. Za izvedenu klasu treba koristiti istu oznaku kao i za osnovnu klasu. Izvedene klase, me?utim, ne treba da imaju isto OsnovnoIme kao osnovna klasa. Na primer:
zivZebra (izvedena klase iz zivZivotinja)
zivSlon (izvedena klasa iz zivZivotinja)
Ova logika za davanje imena izvedenim klasama koristi se i za obrasce, koji su svi izvedeni iz zadate osnovne klase Form i koriste oznaku frm. Ako je promenljiva definisana tako da bude istog tipa kao klasa, koristite uobičajenu oznaku. Na primer:
Dim zivBiloKoja As zivZivotinja
S druge strane, ako definišete promenljivu kao instancu izvedene klase, u ime promenljive uključite celo ime izvedene klase. Na primer:
Dim zivZebraInstance As zivZebra
Dim frmKupacOsnovniPodaci As frmKupac
VBA procedure zahtevaju da odredite imena za više elemenata: imena procedura, parametre i natpise. U sledećim odeljcima opisani su ovi objekti.
VBA dodeljuje imena procedurama za obradu doga?aja koja ne možete menjati. Trebalo bi da koristite velika slova na način kako je definisano u sistemu. Za korisnički definisane procedure velikim slovima pišite prvo slovo svake reči u imenu. Na primer:
Procedure bi u deklaracijama uvek trebalo da imaju ključnu reč, opseg vidljivosti (važenja) Public (javne) ili Private (privatne). Na primer:
Svim parametrima u definiciji procedure trebalo bi da zadate opciju ByVal ili ByRef, iako je ByRef neobavezna i podrazumevana. Parametri procedure dobijaju imena pođednako jednostavno kao i standardne promenljive istog tipa, osim što argumenti koji se prosle?uju po referenci dobijaju prefiks r. Na primer:
Public Sub TestirajVrednost(ByVal intUlaz As Integer, ByRef_
Natpisi dobijaju imena u kojima se koriste velika i mala slova, tako što se prvo slovo svake reči piše velikim slovom. Na primer:
Prefiksi menjaju oznaku objekta i tako pružaju više informacija o njemu.
Indeks nekog niza označavate prefiksom i, a, osim toga, radi konzistentnosti, tip podataka bi uvek trebalo da bude Long. Prefiks za indeks možete da koristite za indeksiranje drugih vrsta nabrojanih objekata, kao što su kolekcije korisnički definisanih klasa. Na primer:
Svaka promenljiva u jeziku VBA ima tri nivoa opsega vidljivosti: Public (javni), Private (privatni) i Local (lokalni). Pored toga, promenljiva ima isti životni vek kao tekuća procedura ili objekat u kome je definisana. Pomoću prefiksa datih u tabeli A.2 možete da ukažete na opseg vidljivosti i životni vek.
Prefiksi m i g koriste se i za druge objekte, kao što su konstante, za pokazivanje njihovog opsega vidljivosti. Na primer:
VBA u deklaracijama promenljivih prihvata nekoliko rezervisanih reči zbog kompatibilnosti sa prethodnim verzijama. Zastarelu rezervisanu reč Global bi uvek trebalo zameniti sa Public, a rezervisanu reč Dim u odeljku General Declarations sa Private.
U tabeli A.3 dati su i opisani još neki prefiksi.
Sufiksi menjaju OsnovnoIme objekta, pružajući dodatne informacije o promenljivoj. Verovatno ćete sami izmišljati svoje sufikse, specifične za projekte na kojima radite. U tabeli A.4 dati su neki opšti sufiksi.
Kada se datoteke smeštaju na disk, oznake nisu potrebne pošto nastavak imena datoteke već opisuje vrstu objekta. Na primer:
Simbol.Cls (modul klase simSimbol)
Matične aplikacije i nastavci imena komponenata u konvencijama
Svaka matična aplikacija za VBA, kao i svaka komponenta koja se može instalirati ima skup objekata koji može da koristi. U ovom odeljku odredićemo oznake za objekte više matičnih aplikacija i komponenata.
U tabeli A.5 dat je spisak oznaka za promenljive koje predstavljaju Accessove objekte. Pored toga što se koriste u programskom kodu za referenciranje odre?enih vrsta objekata, iste oznake se koriste i za imenovanje tih vrsta objekata pri projektovanju obrazaca i izveštaja.
Za namenske ActiveX kontrolne objekte možete da koristite opštu oznaku ocx, kao što je dato u tabeli A.5, ili oznake za objekte odre?enih tipova date u tabelama A.14 i A.15, kasnije u ovom dodatku. Za ActiveX kontrolne objekte koji se ne pojavljuju u tabelama A.14 i A.15 možete da koristite opštu oznaku ocx ili da uvedete svoju.
DAO je interfejs za programiranje Jet mašine baze podataka koju dele Access, Visual Basic i Visual C++. Oznake za DAO 3.6 objekte date su u tabeli A.6.
U tabeli A.7 date su oznake koji se koriste za odre?ivanje vrsta objekata u bazi podataka.
Ako želite, za odre?ivanje namene i tipa objekta baze podataka možete da koristite preciznije oznake ili sufikse. Ako koristite sufikse, za oznaku tipa koristite oznake date u tabeli A.7. Koristite ili oznaku ili sufiks koji se dodaje opštijoj oznaci, ali nikada oba zajedno. Oznake i sufiksi dati su u tabeli A.8.
Prilikom dodeljivanja imena objektima baze podataka nemojte koristiti razmake, a početno slovo svake reči pišite velikim slovom. Na primer, umesto Tabela Nedeljne Prodaje koristite tblNedeljnaProdaja.
Puno se diskutuje o tome da li je potrebno da i polja u tabeli imaju svoje oznake. Ostaje na vama da odlučite da li ćete ih koristiti. Me?utim, ako ih koristite, koristite oznake date u tabeli A.9.
U tabeli A.10 date su oznake objekata Visual Basica 6.
Office 2000 sadrži verziju 2.1 biblioteke ActiveX Data Objects. U tabeli A.11 date su preporučene oznake za ovu verziju ADO-a.
Da bi podržao DDL i bezbednosne objekte u okviru Jet mašine baze podataka, Microsoft je obezbedio ADOX, dodatnu ADO biblioteku objekata. U tabeli A.12 date su oznake za ADOX objekte.
U cilju podrške replikovanja Jetovih podataka, ADO nudi još jednu biblioteku, JRO. U tabeli A.13 dat je predlog oznaka za JRO objekte.
U tabeli A.14 date su oznake za SQL Serverove i MSDE (verzija SQL Servera 7 ograničenih mogućnosti) objekte.
Windows 95 i Windows NT imaju skup zajedničkih kontrolnih objekata koji su dostupni iz VBA koda. U tabeli A.15 date su oznake za instance ovih kontrolnih objekata.
Korišćenje konvencije za dodeljivanje imena u početku zahteva od vas odre?eni napor. Učinak se vidi kasnije, kada vi ili neki drugi programer do?ete u situaciju da morate da ponovo radite sa starim programskim kodom. Korišćenje ovde date konvencije čini vaš kôd čitljivijim i jednostavnijim za održavanje.
Greg Redik (Greg Reddick) je predsednik firme Xoc Software, kompanije za razvoj softvera koja pravi programe u Visual Basicu, Microsoft Accessu i jeziku C/C++. On vodi seminare u firmi Visual Basic Application Developer's Training Company i koautor je knjige Microsoft Access 95 Developers Handbook, u izdanju firme Sybex. È;etiri godine je radio u Microsoftovom razvojnom timu za program Access. Sa njim možete stupiti u kontakt preko elektronske adrese grr@xoc.net ili preko Web prezentacije firme Xoc Software, http://www.xoc.net .