Napsat jednoduchou stránku v ASP umí skoro každý, kdo se tím alespoň několik minut zabýval. Napsat ale ASP stránku tak, abyste se v ní vyznali ještě za nějaký čas, to už chce chvilku cviku. A to nemluvím o případu, kdy by se měl v kódu vyznat ještě někdo jiný než vy osobně :o). V dnešním článku si v krátkosti uvedeme několik zásad, kterých by se měl rozumný programátor alespoň částečně držet.

Jako standardní jazyk pro zápis ASP skriptů je předvolen VBScript. Pokud chcete, můžete si ho samozřejmě změnit na jazyk jiný, ale my zůstaneme právě u VBScriptu, protože se pro ASP používá asi nejčastěji. Zastánci jiných jazyků ať mi tedy laskavě prominou.

Hlavním problémem VBScriptu je, že nemá datové typy. Všechny proměnné jsou jednoho univerzálního typu VARIANT. Ve VBScriptu tedy můžete podle libovůle sčítat řetězce s čísly, pak do té stejné proměnné přiřadit Boolean hodnotu a tu posléze nahradit datumem. On to vlastně ani tak není problém, jako spíš vlastnost, která může některé problémy přivodit. Proto je dobré, když se programátor sám od sebe rozhodne, že bude určité proměnné používat jako by to byly určité datové typy. U takových proměnných (u všech!) je pak dobré si už jejich názvem označit, jakého jsou typu. Pro začátečníky je důležité pochopit, že toto pojmenování a "vnitřní" rozhodnutí programátora nemá samozřejmě na vlastní skriptovací stroj žádný vliv a že VBScript i nadále zachází s proměnnou typu VARIANT. Ale tím, že se programátor chová tak "jako by to byl" příslušný datový typ, se může vyhnout mnoha problémům.

Je vhodné psát počáteční písmena proměnných velkými písmeny. Pokud je název proměnné víceslovný, napište velkými počáteční písmeno každého slova. Před každou proměnnou je dobré uvádět už zmíněný prefix (předponu), který naznačuje datový typ proměnné. Tento prefix se píše malými písmeny. Konvence pro označování proměnných prefixem doporučovaná firmou Microsoft je následující:

Datový typ   Prefix
Boolean   bln
Byte   byt
Collection object   col
Currency   cur
Date-time   dtm
Double   dbl
Error   err
Integer   int
Long   lng
Object   obj
Single   sng
String   str
Variant   vnt
ADO command   cmd
ADO connection   cnn
ADO field   fld
ADO parameter   prm
ADO recordset   rst

Takže například celočíselnou proměnnou zapíšeme jako intMojeCislo, řetězec jako strMujRetezec, apod. Jak už jsem jednou psal: tato konvence není nijak závazná a rozhodně nijak neovlivňuje chování skriptového stroje, ale přispívá k lepší čitelnosti a přehlednosti kódu a může programátora ve vhodnou chvíli upozornit, že operace kterou se chystá provést nad určitou proměnnou nebude zrovna ta nejvhodnější (např. celočíselné dělení řetězcové proměnné :o).

Další dobrou zásadou při práci s proměnnými je zapnutí volby OPTION EXPLICIT. Tento příkaz přikáže skriptovému stroji, aby vyžadoval deklaraci každé použité proměnné. Tzn. každou proměnnou musíte před prvním použitím deklarovat pomocí příkazu Dim, Public nebo Private. OPTION EXPLICIT musíte do skriptu napsat ještě před jakoukoliv procedurou nebo funkcí. Nejvhodnějším místem je samozřejmě začátek skriptu. Pokud vám to připadá jako otravování a zdá se vám naopak pohodlné, používat si proměnné kdykoliv a jakkoliv, zamyslete se jaké problémy to může přinést. Nejtypičtějším problémem je např. kód:

<%
intCislo1 = 10
intCislo2 = 20
intVysledek = intCislo1 + intCislo2
Response.Write „Výsledek součtu “ & intCislo1 & “ + “ & intCislo2 & “ = “ & intVylsedek
%>

Výsledkem tohoto skriptu by měl být na obrazovku vypsaný text „Výsledek součtu 10 + 20 = 30„, jenže místo toho se vypíše pouze „Výsledek součtu 10 + 20 = „. Všímavější čtenář už asi ví proč. Protože ve skriptu je chyba – záměrně jsem za příkazem Response.Write udělal překlep a místo proměnné Vysledek jem napsal VyLSedek. Pokud nemáte zapnutou volbu OPTION EXPLICIT tak VBScript nepozná, že něco je v nepořádku a vypíše obsah proměnné Vylsedek, která je samozřejmě prázdná, protože jsme do ní nic nepřiřadili. Pokud volbu OPTION EXPLICIT zapnete, vyhodí skript chybu:

Microsoft VBScript – chyba při běhu programu (0x800A01F4)
Proměnná není definovaná.: ‚intVylsedek‘

Pokud si pozorně hlášení přečtete, zjistíte, že je to naprosto přesně to, co potřebujete vědět. Zadali jste špatné jméno proměnné. Jistě, že v takhle krátkém a jednoduchém skriptu byste chybu našli během chvilky (i když výjimkou nejsou ani hodinová hledání takovéto chyby), jenže ve složitějším a dlouhém skriptu se právě takovéto chyby hledají velmi težko. Pak se vám zdá, že Microsoft asi „udělal někde chybu“, když vám VBScript tvrdí, že 10 a 20 je 5 :o). Pokud si můžu dovolit radu, tak volbu OPTION EXPLICIT zapínejte. Opravdu to není otravná práce navíc, ale užitečný pomocník. Správně kód tedy vypadá takto:

<%
Option Explicit Dim intCislo1, intCislo2, intVysledek intCislo1 = 10
intCislo2 = 20
intVysledek = intCislo1 + intCislo2
Response.Write „Výsledek součtu “ & intCislo1 & “ + “ & intCislo2 & “ = “ & intVysledek
%>

Dalším obecným doporučením pro psaní ASP stránek je nepřeskakovat příliš často z ASP do HTML a naopak. Pokud vyvíjíte ASP pro IIS 4.0 (WindowsNT 4.0) má toto doporučení význam nejenom pro přehlednost ale i pro rychlost zpracování skriptu. Přepínání mezi ASP a HTML totiž zabere nějaký čas a u webových aplikací je dobrá každá ušetřená milisekunda. U IIS 5.0 (Windows 2000) Microsoft říká, že se přechody mezi jednotlivými bloky kódu podstatně zrychlil, rozhodně to však přeci jen nějakou dobu zabere a je tudíž dobré se tomu vyhnout, pokud to jde. Takže místo kódu:

Jméno: <%= strJmeno %><BR>
Příjmení: <%= strPrimeni %><BR>

je mnohem lepší napsat vše v ASP:

<%
Response.Write „Jméno: “ & strJmeno & „<BR>“
Response.Write „Příjmení: “ & strPrijmeni & „<BR>“
%>

Kód je nejen rychlejší, ale jak určitě uznáte, i mnohem přehlednější. Další velmi často připomínanou zásadou je komentování kódu :) Komentujte! Jinak se v kódu nevyznáte za nějaký čas ani vy sami, natož pak abyste si mohli dovolit bez potíží předat skript k dokončení nebo přepracování někomu jinému. Zkuste se nad tím zamyslet a postupně zkoušejte začít psát své kódy „správně“:o) Půjde to těžko, ale za chvílku si zvyknete a uvidíte, že váš kód bude srozumitelnější a přehlednější. Podobných zásad existuje ještě celá řada a pokud budete mít zájem, můžeme si o nich povědět někdy příště.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět