Konvence pro skriptovací jazyk: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Řádek 6: | Řádek 6: | ||
*Mezery před a za názvem knihovny | *Mezery před a za názvem knihovny | ||
*Deklarace nezalamujeme | *Deklarace nezalamujeme | ||
+ | *Deklarace řadíme dle abecedy (kvůli zamezení duplicitním deklaracím) | ||
+ | *Pro každou knihovnu vytvoříme vlastní blok deklarací (např. kvůli problematice [[#Uvolnění knihovny externích funkcí]]) | ||
*Za blokem deklarací vynecháme jeden řádek | *Za blokem deklarací vynecháme jeden řádek | ||
<pre style="background-color: rgb(255, 153, 153);"> | <pre style="background-color: rgb(255, 153, 153);"> | ||
Řádek 21: | Řádek 23: | ||
*Bez mezer kolem <code>()</code> | *Bez mezer kolem <code>()</code> | ||
*Název začíná velkým písmenem, ostatní písmena jsou malá, s výjimkou počátečních písmen dalších slov | *Název začíná velkým písmenem, ostatní písmena jsou malá, s výjimkou počátečních písmen dalších slov | ||
− | |||
<pre style="background-color: rgb(255, 153, 153);"> | <pre style="background-color: rgb(255, 153, 153);"> | ||
script Get_currency_code(): string // Špatně | script Get_currency_code(): string // Špatně | ||
Řádek 51: | Řádek 52: | ||
*Na stejné řádce vždy pouze úzce související proměnné (např. souřadnice <code>X</code>, <code>Y</code>) | *Na stejné řádce vždy pouze úzce související proměnné (např. souřadnice <code>X</code>, <code>Y</code>) | ||
*Mezera za znaky <code>,</code>, resp. <code>:</code>, nikdy ne před těmito znaky | *Mezera za znaky <code>,</code>, resp. <code>:</code>, nikdy ne před těmito znaky | ||
− | *Proměnné pojmenováváme vždy popisnými jmény, nepojmenováváme pouze jedním písmenem (výjimkou mohou být např. souřadnice <code>X</code>, <code>Y</code>, řídící proměnné cyklů <code>I</code>, <code>J</code> | + | *Proměnné pojmenováváme vždy popisnými jmény, nepojmenováváme pouze jedním písmenem (výjimkou mohou být např. souřadnice <code>X</code>, <code>Y</code>, řídící proměnné cyklů <code>I</code>, <code>J</code> atd.) |
*Proměnné pojmenováváme malými písmeny, pouze počáteční písmena slov jsou velká (platí i pro globální proměnné) | *Proměnné pojmenováváme malými písmeny, pouze počáteční písmena slov jsou velká (platí i pro globální proměnné) | ||
*V názvech nepoužíváme podtržítka (platí i pro globální proměnné) | *V názvech nepoužíváme podtržítka (platí i pro globální proměnné) | ||
Řádek 255: | Řádek 256: | ||
*Pokud známe potřebný výsledek před dokončením všech obrátek cyklu, vždy jej předčasně ukončíme příkazem <code>break</code> | *Pokud známe potřebný výsledek před dokončením všech obrátek cyklu, vždy jej předčasně ukončíme příkazem <code>break</code> | ||
*Pokud před dokončením jednoho průchodu cyklem víme, že nemůžeme získat potřebný výsledek, pokročíme rovnou na další index pomocí příkazu <code>continue</code> | *Pokud před dokončením jednoho průchodu cyklem víme, že nemůžeme získat potřebný výsledek, pokročíme rovnou na další index pomocí příkazu <code>continue</code> | ||
+ | |} | ||
+ | = Uvolnění knihovny externích funkcí = | ||
+ | {| | ||
+ | |- | ||
+ | *Knihovna je standardně načtena skriptem při použití první funkce z této knihovny | ||
+ | *Knihovna je automaticky uvolněna s koncem skriptu | ||
+ | *Pokud je volán podskript a knihovna externích funkcí již byla načtena v nadřazeném skriptu, není již znovu načtena | ||
+ | **V tom případě není knihovna ani uvolněna s koncem skriptu | ||
+ | *Pokud je potřeba zamezit uvolnění knihovny s koncem skriptu (např. kvůli předání hodnot nadřazenému skriptu), je potřeba za deklaraci funkce z knihovny vložit klíčové slovo <code>nounload</code> | ||
+ | **Toto klíčové slovo je nutné vložit vždy za první deklaraci z této knihovny | ||
+ | <pre style="background-color: rgb(153, 255, 153);"> | ||
+ | declare function GetCurrency dll "ActualDocument" (string): currency nounload | ||
+ | </pre> | ||
|} | |} | ||
[[Category: enTeam skripty]] | [[Category: enTeam skripty]] |
Aktuální verze z 9. 8. 2021, 10:10
Tento dokument popisuje konvence skriptovacího jazyka
Obsah
Deklarace externích funkcí
- Bez odsazení
- Mezery před a za názvem knihovny
- Deklarace nezalamujeme
- Deklarace řadíme dle abecedy (kvůli zamezení duplicitním deklaracím)
- Pro každou knihovnu vytvoříme vlastní blok deklarací (např. kvůli problematice #Uvolnění knihovny externích funkcí)
- Za blokem deklarací vynecháme jeden řádek
declare function GetCurrency dll"ActualDocument"(string): currency // Špatně
declare function GetCurrency dll "ActualDocument" (string): currency // OK
Název skriptu
- Bez odsazení
- Bez mezer kolem
()
- Název začíná velkým písmenem, ostatní písmena jsou malá, s výjimkou počátečních písmen dalších slov
script Get_currency_code(): string // Špatně script GetCurrencyCode () : string // Špatně
script GetCurrencyCode(): string // OK
Klíčová slova
- Klíčová slova (zvýrazněná v editoru), např. názvy typů, píšeme vždy malými písmeny
- Pozor na klíčové slovo
nounload
, které se nezvýrazňuje
String, Integer, ActualDocument, Result // Špatně
string, integer, actualdocument, result // OK
Lokální proměnné
- Deklarace první proměnné je vždy pod klíčovým slovem
var
, nikdy ne na stejné řádce - Odsazení 2 mezery
- Na stejné řádce vždy pouze úzce související proměnné (např. souřadnice
X
,Y
) - Mezera za znaky
,
, resp.:
, nikdy ne před těmito znaky - Proměnné pojmenováváme vždy popisnými jmény, nepojmenováváme pouze jedním písmenem (výjimkou mohou být např. souřadnice
X
,Y
, řídící proměnné cyklůI
,J
atd.) - Proměnné pojmenováváme malými písmeny, pouze počáteční písmena slov jsou velká (platí i pro globální proměnné)
- V názvech nepoužíváme podtržítka (platí i pro globální proměnné)
- Pro proměnné, které mají neočekávaný typ, používáme prefixy psané malými písmeny
Typ | Prefix |
---|---|
string
|
s |
integer
|
i |
boolean
|
b |
date
|
d |
currency
|
c |
user
|
u |
usercollection
|
uc |
- Nepoužíváme lokální listové proměnné (
stringlist
,integerlist
, …), protože nefungují správně
var Count: integer // Špatné odsazení, schází zalomení S_Count: string // Špatné pojmenování proměnné
var Count: integer // OK sCount: string // OK
Lokální konstanty
- Konstanty zapisujeme do sekce
var
, protože sekci pro konstanty skriptovací jazyk nepodporuje - Konstanty v sekci zapisujeme před proměnné a mezi konstantami a proměnnými vždy vynecháme prázdný řádek
- Konstanty pro odlišení pojmenováváme pouze velkými písmeny, pro oddělení slov používáme podtržítko
- Je vhodné pro přehlednost všechny konstanty nadefinovat hned na začátku skriptu
var ItemCount: integer // Špatné pojmenování konstanty, označuje proměnnou
var ITEM_COUNT: integer // OK
Tok skriptu
- Odsazení na 2 mezery
- Maximální délka řádku 80 znaků
- Tolerovat lze nezalomení do 100 znaků
- Při zalomení řádku je na dalším řádku (řádcích) odsazení 4 mezery
- Zalamování je vhodné za oddělovači (
, :
), binárními operátory (+ - * / = := += -= ++= or and, ...
) nebo za( [
// Špatně I := 0 J := 0 if I > 0 then J += 1 end
// OK I := 0 J := 0 if I > 0 then J += 1 end
Komentáře
- Komentáře se zarovnávají stejně jako kód skriptu
- Za uvozením komentáře vložíme mezeru a začneme velkým písmenem
- U víceřádkového komentáře nepoužíváme
//
a komentář zarovnáme do bloku
//špatně /* Také špatně */
// Toto je správně /* Také správně */
Výrazy
- Vkládáme jednu mezeru před i za operátor
- Nevkládáme zbytečné závorky
- Výjimkou jsou logické výrazy obsahující více podmínek, kde zápis bez závorek ztrácí na přehlednosti
// Špatně I:=J+5 if (I = 0) then if I = 0 and J = 0 then
// OK I := J + 5 if I = 0 then if (I = 0) and (J = 0) then
Ukončení příkazů
- Koncový
end
je vždy zarovnán stejně jako příkaz, ke kterému se váže - Blok kódu pod tento příkaz spadající je oproti příkazu odsazen o 2 mezery
// Špatně if I = 0 then I += 1 end
// OK if I = 0 then I += 1 end
Příkazy
Příkaz if (else)
- Blok kódu pod tento příkaz spadající je oproti příkazu odsazen o 2 znaky
- Pokud je testována jedna proměnná na více hodnot, používáme pro přehlednost i zvýšení výkonu
else
větev- Toto neplatí, pokud se řídící proměnná podmínky může změnit v kódu spadajícím pod předchozí podmínku
if I < 0 then write("Záporné číslo") end if I = 0 then write("Nula") end if I > 0 then write("Kladné číslo") end
if I < 0 then write("Záporné číslo") else if I = 0 then write("Nula") else write("Kladné číslo") end end
Příkaz case
- Protože příkaz
case
nefunguje správně, je nutné použít sadu podmínekif
!!! - Pokud je velké množství porovnávaných hodnot a docházelo by k velkému zanoření kódu kvůli cyklickému odsazení
else
větví, je možné použít cykluswhile true do
se sadou podmínek, kdy každá obsahuje příkazbreak
pro ukončení cyklu a ukončení porovnávání hodnot- Pokud bude zapomenut příkaz break, skončí skript v nekonečné smyčce
while true do if I = 0 then write("Nula") break end if I = 1 then write("Jedna") break end if I = 2 then write("Dva") break end // Else větev write("Neznámé číslo") break end
Cykly while do, for to do, foreach do
- Pokud známe potřebný výsledek před dokončením všech obrátek cyklu, vždy jej předčasně ukončíme příkazem
break
- Pokud před dokončením jednoho průchodu cyklem víme, že nemůžeme získat potřebný výsledek, pokročíme rovnou na další index pomocí příkazu
continue
Uvolnění knihovny externích funkcí
- Knihovna je standardně načtena skriptem při použití první funkce z této knihovny
- Knihovna je automaticky uvolněna s koncem skriptu
- Pokud je volán podskript a knihovna externích funkcí již byla načtena v nadřazeném skriptu, není již znovu načtena
- V tom případě není knihovna ani uvolněna s koncem skriptu
- Pokud je potřeba zamezit uvolnění knihovny s koncem skriptu (např. kvůli předání hodnot nadřazenému skriptu), je potřeba za deklaraci funkce z knihovny vložit klíčové slovo
nounload
- Toto klíčové slovo je nutné vložit vždy za první deklaraci z této knihovny
declare function GetCurrency dll "ActualDocument" (string): currency nounload