|
Začátečník |
Pokročilý |
Profesionál |
|||||
|
|
|
||||||
Úvod
do světa .NET /7. díl Moderní technologie
vývoje softwaru |
||||||||
|
|
Budete potřebovat
přibližně 95 minut |
|
Operační systém
použitý v příspěvku: Windows 2000 Vývojové nástroje:
Visual Basic .NET |
||||
|
Vážení programátoři,
nabídka červencového dílu seriálu bude vskutku
bohatá. Nejprve se podíváme na některá pravidla, které byste měli dodržovat při
pojmenovávání proměnných jak hodnotových, tak i referenčních datových typů. Dále
vzpomeneme využití komentářů a jejich smysl při dokumentaci zdrojového kódu. Ve
finále se můžete těšit na vysvětlení pojmů funkce, argument a parametr. Rovněž
dojde i na ozřejmění dvou základních způsobů předávání argumentů. Příjemné
počtení.
Zásady pro pojmenovávání
proměnných
I když by se mohlo na první pohled zdát, že
problematika správného pojmenování proměnných je, ve srovnání s jinými
programátorskými oblastmi, poněkud méněcenná, není tomu tak. Dokonce lze říci,
že pokud programátor ovládne ty správné návyky v určování názvosloví
proměnných, získá nejenom značný přehled o situaci ve svém zdrojovém kódu, ale
bude rovněž dostatečně připraven pro profesionální práci v programátorském
týmu.
Na začátek si uveďme několik „dobrých rad“,
které můžete při pojmenovávání proměnných vhodně využít.
Příklady:
Dim
123Objednávka as Short
'nepovolené
pojmenování proměnné
Dim
Objednávka123 As Short
'přípustné pojmenování proměnné
Příklady:
Dim
Název As String
Dim
výpočet As Double
Dim
_Proměnná As Integer
Dim
PočetVýrobků As Integer
Dim
KoeficientInflace As Single
Druhá
varianta spočívá v častém použití znaku podtržení (_):
Dim
Obsah_kruhu As Integer
'nebo také
Dim
Obsah_Kruhu As Integer
Ovšem vezměte
prosím v potaz, že z posledních dvou příkladů pojmenování proměnné
může být v jedné lokální oblasti (proceduře, funkci, metodě) použit jenom
jeden z nich. Protože VB .NET nepatří mezi programovací jazyky, které by
rozlišovali malá a velká písmena, považoval by deklaraci druhé proměnné za chybnou
(jde o chybu tzv. duplicitní deklarace proměnné).
Dim
intDeterminant As Integer
Dim
strSlogan As String
Prefix býval
zvyčejně třípísmenný a spolehlivě charakterizoval příslušnost proměnné
k vybranému datovému typu. V uvedených příkladech prefix int říká, že proměnná je datového typu Integer a předpona str zase identifikuje proměnnou datového typu String.
Maďarská notace
byla velice populární především při programování v jazycích C a C++,
později se ovšem také dostala i do prostředí Visual Basicu. Mnoho programátorů
se s ní sžilo natolik, že ji používají dodnes.
Komentáře a jejich smysl v procesu dokumentace zdrojového kódu
Visual Basic .NET poskytuje programátorům již
hodně dlouho možnost zařadit do kódu také řádky ryze informačního charakteru,
kterým se říká komentáře. Ve výpisech programových kódů jsem už komentáře někdy
používal, takže jste se s nimi již mohli střetnout. Komentář můžete do
vašeho kódu zařadit velmi jednoduše:
Dim
CenaVýrobku As Single
'Právě byla
deklarována proměnná datového typu Single.
Vše, co se objeví za znakem apostrofu považuje
VB .NET za komentář. Komentář poznáte lehce podle jeho zelené barvy.
|
Informační text komentáře může být uveden nejen znakem apostrofu, ale
také textovým řetězcem REM. Ve chvílích, kdy nebudete chtít hledat
správnou klávesu pro vložení apostrofu, vám možná zapsání formulky REM ušetří
drahocenný čas. |
|
Pokud by vám
standardní barva komentáře nevyhovovala, můžete ji změnit. Více informací si
můžete přečíst v kapitole Jak změnit standardní barvu
komentářů. |
Při práci s komentáři si musíte
pamatovat, že systém komentářů je založen na řádkovém schématu. To znamená, že
po vložení apostrofu je celý řádek vyhrazen jenom pro komentář. Když do
takového řádku vložíte programový kód, tento nebude proveden, protože Visual
Basic .NET bude přepokládat, že jde o komentář. Komentář se samozřejmě může
rozkládat také na více řádcích. V tomto případě se ale musí na začátku
každého řádku nacházet znak apostrofu. Podívejte se na následující ukázku:
MessageBox.Show("Tento text se
zobrazí v okně se zprávou.")
'Metoda Show
'třídy
MessageBox
'zabezpečí
zobrazení okna se zprávou.
Velmi důležitá je skutečnost, že při kompilaci
zdrojového kódu aplikace komentáře zbytečně nezdržují práci překladače, nakolik
tento je ignoruje. Není tedy pravdou tvrzení, že čím víc komentářů v kódu
používáte, tím je váš kód prováděn pomaleji.
Implementace komentářů do programového kódu
vaší aplikace je velmi důležitá. Pokud budete schopni vhodnou formou
dokumentovat činnost vašeho kódu, vytvoříte si pevnou základnu pro pozdější
modifikaci a rozšiřování funkčnosti aplikace. Přitom bude dobré, když budete
komentovat jak jednoduché sekvence, tak i složité vnořené partie programového
kódu. Úsilí, které vynaložíte na tvorbu komentářů, se vám vrátí i
s pomyslnými úroky ve chvíli, když se k předmětnému kódu vrátíte po
půlroce, nebo i delší době.
|
Značné množství programátorů začátečníků propadá dojmu, že kódu, který
napíšou dnes, budou rozumět kdykoliv. Když se tito programátoři po delší době
vrátí k vlastnímu zdrojovému kódu, jenom s hrůzou budou nahlížet na
komplikované programovací konstrukce, na pochopení kterých budou potřebovat
dodatečný čas. Kdyby ovšem svůj kód pečlivě dokumentovali, tento dodatečný
čas mohli využít daleko smysluplněji. |
Význam komentářů ještě vzrůstá při studiu
cizího zdrojového kódu. Věřte, že přijít na to, jak myslel jiný programátor při
psaní té-které funkce či procedury, je někdy podstatně těžší, jako napsání své vlastní
procedury nebo funkce.
Pokud vyvíjíte uživatelský ovládací prvek nebo
komponentu, kterou pak poskytnete jiným vývojářům bezplatně, nebo ji budete
nabízet na trhu softwarových součástí, měli byste dokumentační systém rozšířit
o kompletní elektronickou dokumentaci ve formě nápovědy. V případě
ovládacího prvku by nápověda měla obsahovat popis všech tříd (bázových i
abstraktních), rozhraní, metod a vlastností.
|
Návrh ovládacích prvků by měl vyhovovat základním principům objektově
orientovaného programování (OOP). Jedním z těchto principů je takzvané zapouzdření
(encapsulation). Zapouzdření říká, že klientský kód by měl s ovládacím
prvkem komunikovat jenom prostřednictvím jeho rozhraní (tedy voláním
příslušných metod a využíváním vstavěných vlastností). Samotné jádro
implementace ovládacího prvku by ale nikdy nemělo být přístupné klientské
aplikaci. Z tohoto důvodu se cizí programátor nikdy nedostane ke
komentářům zdrojového kódu ovládacího prvku. |
Jak změnit standardní barvu komentářů
Nejste-li spokojeni se zelenou barvou
komentářů, připravil jsem pro vás postup, jak tuto barvu modifikovat a změnit
podle vašich požadavků. Postupujte podle následujících instrukcí:
|
Jestliže vás ani nabídka barev otevíracího seznamu Item foreground nepotěšila, klepněte
na tlačítko Custom a vyberte si
vlastní barvu z barevného spektra RGB. |
Charakteristika pojmu funkce
Věřím, že funkcím přijdete rychle na chuť,
protože pod pojmem funkce si můžete představit metodu, která vrací jistou
hodnotu. Právě schopnost vracet hodnotu dělá z obyčejné metody pravou a
nefalšovanou funkci. Hodnota, kterou funkce vrací, se nazývá návratová hodnota
funkce. Hlavní rozdíl mezi metodou a funkcí je následující:
Obr. 1 – Činnost práce metody
Obr. 2
– Činnost práce funkce
Deklarace funkce ve VB .NET
Nejdříve se podívejme na ukázkovou deklaraci
funkce, a poté si povíme, z čeho se deklarační příkaz funkce skládá:
Public Function Moje_Funkce(ByVal
číslo As Short)
As Integer
Dim
Druhá_Mocnina As Integer
Druhá_Mocnina = číslo * číslo
Return
Druhá_Mocnina
End
Function
Deklarační příkaz pro vytvoření funkce pozůstává
z těchto hlavních součástí:
Modifikátor
přístupu určuje úroveň, na které bude funkce přístupná. Jinými slovy, pomocí
modifikátoru přístupu můžete určit, zdali bude funkce veřejná (Public), a tak přístupná z celého projektu, nebo naopak soukromá (Private). Soukromá funkce je přístupná pouze v rámci vyššího programového
bloku, v kterém je deklarována (tímto blokem může být například třída). Kromě
modifikátorů Public a Private existují ještě další (Protected, Friend a Protected Friend), ovšem těmi se v této
chvíli nebudeme zabývat.
Tento příkaz musí následovat ihned za specifikací modifikátoru přístupu. Příkaz
říká Visual Basicu, že budete chtít vytvořit funkci. Protějškem příkazu Function je příkaz End Function. Tyto dva příkazy ohraničují
takzvané tělo funkce. Tělem funkce se proto rozumí všechny řádky programového
kódu, které se nacházejí mezi příkazy Function a End Function.
Název funkce
představuje uživatelsky přívětivé pojmenování funkce (v našem případe je názvem
funkce řetězec Moje_Funkce). Zvolený název funkce budete
používat vždy, když budete chtít funkci zavolat.
Pod pojmem
signatura funkce se rozumí seznam parametrů funkce, který je umístěn v kulatých
závorkách. Jestliže signatura funkce obsahuje víc jak jeden parametr, jsou
parametry od sebe odděleny čárkami. Signatura funkce nemusí také obsahovat
žádný parametr, ovšem i v tomto případě je použití kulatých závorek
povinné. V našem příkladě tvoří signaturu funkce jenom jeden parametr
datového typu Short s názvem číslo. Bližší pohled na parametry a argumenty můžete najít v kapitole Charakteristika pojmů argument a parametr.
Jak již víte,
funkce po vykonání své práce vrací návratovou hodnotu. V deklaračním
příkazu je potřebné determinovat datový typ návratové hodnoty funkce. Určení
návratové hodnoty funkce se uskuteční zapsáním klíčového slova As za signaturu funkce a přidáním názvu platného datového typu.
Z deklarace naší funkce je zřejmé, že funkce bude vracet celočíselnou
hodnotu typu Integer. Vrácení hodnoty má na starosti příkaz
Return. Vše, co se nachází za tímto příkazem tvoří návratovou hodnotu funkce
(v našem případě jde o hodnotu proměnné Druhá_Mocnina).
Naše funkce (Moje_Funkce) pracuje v několika krocích. Abyste ovšem byli schopni opravdu
pochopit skutečnou činnost funkce, musíme si nejprve ozřejmit pojmy argument a
parametr.
Charakteristika pojmů argument a parametr
Pojmy argument a parametr jsou ve světě programování velice
důležité, a proto bude dobré, když budete jejich studiu věnovat více času. Argumentem se rozumí hodnota, která je poskytnuta funkci jako
jakási „vstupní surovina“. Aby ovšem funkce mohla tuto hodnotu přijmout a
uchovat, musí disponovat parametrem, neboli proměnnou, do které se přijímaná hodnota uloží. Vztah mezi argumentem a
parametrem je znázorněn na obr. 3.
Obr. 3 – Ilustrace vztahu argumentu a parametru
Charakteristika způsobu předávání argumentů
Visual Basic .NET podporuje dvě varianty
předávání argumentů:
Při předávání
argumentů hodnotou je volané funkci poskytnuta jenom kopie skutečného
argumentu. Funkce tak pracuje pouze s kopii skutečného argumentu a i když
argument změní, tato změna bude pouze lokální a nijak neovlivní skutečný
argument. Jestliže budete chtít, aby byl argument funkci předán hodnotou, před
název parametru, jenž bude přijímat tento argument, dodáte klíčové slovo ByVal. Použití tohoto klíčového slova při předávání argumentů hodnotou ovšem
není povinné, protože VB .NET implicitně předává všechny argumenty hodnotou. Když
tedy před jméno přijímacího parametru nepřidáte klíčové slovo ByVal, nic se neděje, stejně bude argument předáván hodnotou. Zapsání
klíčového slova ByVal ale zpřehledňuje kód a vizuálně vás
informuje o způsobu předávání argumentů.
Na druhé straně se
můžete střetnout také s předáváním argumentů odkazem. V tomto případě
je volané funkci poskytnut skutečný argument. Přesněji, funkci je dodán ukazatel
na paměťovou adresu, na které se skutečný argument nachází. Když funkce získá
přístup ke skutečné hodnotě, může ji také lehce modifikovat podle svých
požadavků. Když budete chtít, aby byl parametru funkce předán argument odkazem,
před jméno parametru přidejte klíčové slovo ByRef. Předávání argumentů odkazem je velmi užitečná technika, která se
využívá také při některých pokročilých programovacích postupech.
Praktická ukázka použití funkce
V této praktické studii si ukážeme, jak
volat funkci z volající procedury. Postupujte takto:
Public
Function Moje_Funkce(ByVal
číslo As Short)
As Integer
Dim
Druhá_Mocnina As Integer
Druhá_Mocnina = číslo * číslo
Return
Druhá_Mocnina
End Function
MessageBox.Show(Moje_Funkce(100).ToString)
Jednotlivé části deklarace funkce Moje_Funkce jsme si již objasnili. V této chvíli se zaměřte na parametr
funkce s názvem číslo. Jak vidíte, před jménem parametru je
uvedeno klíčové slovo ByVal, které indikuje, že
argument, který bude parametr přijímat, bude předáván hodnotou. Parametr bude
tedy obsahovat jenom kopii skutečné hodnoty. A jakáže hodnota bude parametru
předaná? Bude to hodnota, která je poskytnuta funkci při jejím zavolání
z volající procedury. Když se podíváte na kód událostní procedury Click tlačítka Button1, uvidíte, že funkci je poskytnuta
celočíselná hodnota 100.
Pojďme ovšem dál a podívejme se blíže na
algoritmus práce funkce.
Poté, co je funkci dodána hodnota 100, je kopie této hodnoty (resp. tohoto argumentu) umístěna do parametru číslo. Protože je parametr deklarován jako proměnná datového typu Short, jehož rozsah tvoří uzavřený interval <-32,768, 32,767>, je vše v pořádku a kopie argumentu může být úspěšně uložena do proměnné číslo. Kdybyste ovšem překročili povolený rozsah datového typu, program by nepracoval správně a střetli byste se s chybou za běhu programu.
V okamžiku, kdy parametr funkce obsahuje kopii skutečné hodnoty, je tato kopie použita k další operaci, kterou je vypočtení její druhé mocniny. Výsledek součinu je posléze uložen do lokální proměnné s názvem Druhá_Mocnina. Ve finálním kroku je vypočtená druhá mocnina argumentu vrácena pomocí příkazu Return volající událostní proceduře Button1_Click. Vrácená hodnota je nakonec zobrazena v okně se zprávou, které je zobrazeno prostřednictvím metody Show třídy MessageBox.
Ján Hanák