Kurs VBA – cz. 19 – Nazywanie zmiennych

O zmiennych pisałem już w dziesiątej części. Jeżeli uczciwie przeszedłeś cały kurs to pewnie już dość swobodnie się nimi posługujesz w podstawowym zakresie. Dzisiaj napiszę o często ignorowanym ale bardzo ważnym elemencie zmiennych i stałych, czyli ich nazwie.

Już teraz nadmienię, że koncepcji nazywania zmiennych jest mnóstwo. Poniższa działa dla mnie i proponuję ją stosować oraz ewentualnie później modyfikować. Ostatecznie ważne jest, żeby w ramach jednego projektu konsekwentnie korzystać z jednej konwencji.

Zmienne absolutnie zawsze muszą mieć nazwy, które możliwie dużo o nich mówią. Zamiast arkusz1 i arkusz2 należy użyć ArkuszDocelowy i ArkuszZrodlowy. Zamiast MojaZmienna albo x należy użyć SumaSprzedazy lub IloscWierszy itp. Z reguły lepiej, jeżeli nazwa jest dłuższa, niż krótsza.

Jakimi innymi zasadami powinniśmy się kierować?

Części nazwy

Nazwa zmiennej składa się z dwóch części oddzielonych znakiem podkreślenia.

Przedrostek (gbln) określa techniczny aspekt zmiennej, jej typ oraz zakres. Część główna (TrybEdycji) definiuje sens zmiennej, jej funkcję w naszym programie.

Część główna

Tworząc nazwę z kilku członów poruszam się od ogółu do szczegółu, czyli:

  • ArkuszDocelowy
  • ArkuszZrodlowy
  • ArkuszWykres
  • SumaSprzedaz
  • SumaMarza
  • SumaRegion

Powyżej stosuję tak zwaną notację wielbłąda, czyli każdy nowy wyraz rozpoczynam wielką literą.

Przedrostki – zakres zmiennej

Przedrostek składa się z dwóch części, określającej zakres stosowania zmiennej oraz jej typ. Pierwsza litera oznacza zakres, następne trzy typ.

Wiemy już, że zmienna może należeć do jednego z trzech zakresów. Poniżej znajdują się też zmienne będą argumentami funkcji, o czym za chwilę.

O zaletach stosowania odpowiednich zakresów widoczności zmiennych pisałem już w części o dobrych praktykach programowania. Umieszczając odpowiedni przedrostek jesteśmy pewni na jaką część kodu ma wpływ nasza zmienna.

Dobry zwyczajem jest też stosowanie odpowiedniego przedrostka dla argumentów funkcji. Wiemy wtedy, że wartość naszej zmiennej pochodzi gdzieś z wyższego poziomu, lub z domyślnej wartości argumentu. Dodatkowo widać od razu czy zmienną można zmieniać (ByRef), czy nie (ByVal). Więcej o argumentach funkcji w części kursu o funkcjach i procedurach.

Przedrostki – typ zmiennej

Druga część przedrostka definiuje typ zmiennej. Dzięki temu łatwo możemy określić techniczne cechy zmiennej, bez wracania do jej definicji. Poniżej znajdują się przedrostki dla wbudowanych typów zmiennych.

Typ zmiennej
Przedrostek
Przykład
Boolean
bln
gbln_TrybEdycji
Byte
byt
Byt_RasterData
Collection object
col
Col_Widgets
Currency
cur
cur_Zysk
Date (Time)
dtm
dtm_Start
Double
dbl
dbl_Zapas
Integer
int
int_Ilosc
Long
lng
lng_OstatniWiersz
Single
sng
sng_Srednia
String
str
str_Ulica
Variant
vnt
vnt_CheckSum

Przedrostki stałych

Jak pisałem w poprzedniej części, stałe powinny być tylko globalne. Tworzenie ich nazw jest więc bardzo proste. Wystarczy przed nazwą główną dodać gc_ (global constant).

Własne przedrostki

Jeżeli utworzymy własną klasę wystarczy określić dla niej trzy literowy skrót i używać dla obiektów tej klasy.

Podsumowanie

Stosowanie tej czy jakiejkolwiek innej konwencji nazewniczej z reguły jest na początku ciężkie i łatwo z niej zrezygnować. W przypadku drobnych programów łatwo ulec i zrezygnować z nadawania odpowiednich nazw. Warto jednak być konsekwentnym, bo zyski będą znaczne. Żaden szanujący się programista nie wyobraża sobie programowania bez stosowania konwencji nazewniczej.

Zapraszam do zadawania pytań w komentarzach.

 

Subskrybuj RSS, lub polub blog na Facebooku aby otrzymywać najnowsze informacje o rozwoju kursu.

Comments 2

  1. "Dodatkowo widać od razu czy zmienną można zmieniać (ByRef), czy nie (ByVal)." Nie rozumiem tego. Czyż ideą zmiennych nie jest, że można je zmieniać? 🙂

  2. Tu chodzi nie tyle o zmienne w ogóle, ale argumenty funkcji. Jeżeli analizujemy ciało długiego programu poszukując co jest nie tak z jakąś moją jedną zmienną i znajdujemy funkcję, która przyjmuje tą zmienną jako ByVal, to wiem, że ta funkcja nie mogła jej zmienić. Zachęcam do poeksperymentowania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *