Standardy v. 1.0 (29.3.2001)
Odsazení
- Odsazení úrovní jsou 4 mezery.
- Do kódu nevkládejte TAB znaky. Nastavení tabelátorů se může na
jednotlivých strojích lišit.
- Tabelátory nekombinovat s mezerami.
Okraje
- Důležité je dodržovat pravidlo jeden příkaz na jeden řádek, aby
nevznikaly zápisy typu: PromennaCislo1 := VolaniNejakeFunkce ();
NejakaInaPromenna := NecoJineho;
- Doporučený pravý okraj je 80
znaků. Pokud je řádek delší může se
rozdělit na více řádků při zachování logického odsazení.
Poznámky
Závorky
- Mezi znaky a závorky vkládat mezery.
Příklad:
iRet = Connect ( Parametr, Parametr2, ParametremJeFce () ); // správně
iRet = Connect(Parametr,Parametr2,ParametremJeFce ()); // špatně
- Nevkládat závorky tam, kde jsou zbytečné nebo nejsou generovány vývojovým prostředím.
Příklad:
If ( I = 42 ) Then // špatně
If ( I = 42 ) Or ( J = 42 ) Then // správně – závorky jsou povinné
Rezervovaná slova
- Rezervovaná slova se vždy začínají velkým písmenem a zbytek malými
písmeny. To je standardní vlastnost Visual Basicu.
Procedury a funkce
- Jména začínají vždy velkými písmeny a velkými písmeny
zvýrazňujeme začátek slova ve názvu.
Příklad:
Sub ThisIsMuchMoreReadableRoutineName();
- Jméno musí odpovídat prováděné činnosti a začínat označením akce.
Příklad:
Sub FormatHardDrive();
- Procedury nebo funkce vázané na událost si Visual Basic pojmenuje sám podle
jména objektu a události.
Příklad:
Sub cmdOpen_Click ();
- Procedury nebo funkce nastavující parametry by měly začínat prefixem Set.
Příklad:
Sub SetUserName();
- Procedury nebo funkce vracející hodnoty by měly začínat prefixem Get.
Příklad:
Sub GetUserName();
Proměnné
- Jméno proměnné má odpovídat jejímu použití.
- První písmeno je velké.
- Ve jmnénech nikdy nepoužívat podtržítko (kromě globálních předpon)
- Pokud proměnná označuje níže uvedené typy , začíná prefixem.
Proměnné
|
b |
boolean |
|
by |
byte |
|
ctl |
control |
|
c |
currency |
|
dt |
date |
|
d |
double |
|
f |
float |
|
h |
handle |
|
i |
integer |
|
l |
long |
|
n |
numeric |
|
obj |
object |
|
sn |
single |
|
s |
string |
|
v |
variant |
|
g_ |
globální |
- Z jména logických hodnot musí zcela jasně vyplývat hodnoty True nebo False.
- Pro označení řídících proměnných cyklu se všeobecně používají i, j nebo k,
ale lze použít i názvy odpovídající významu např. iUserIndex.
Příklad:
Dim
iI As Integer
iJ As Integer
sWord As string
dbData As Database
bIsOK As Boolean
Konstanty
- Jména konstant se píší velkými písmeny.
Příklad:
Const MAX_HEIGHT As Integer = 24;
Třídy
- Jména tříd se řídi stejným pravidlem jako procedury/funkce.
- Jména procedur třídy se také řídi stejným pravidlem jako normální procedury/funkce.
- Vnitřní proměnné tříd mají prefix m_.
Příklad:
m_iCount
m_sServerName
Příkazy
If
- Nejvíce používaný kód vkládat do sekce Then, méně používaný kód do sekce Else.
- Místo zřetězení příkazů If používat příkaz Select case.
- Nepoužívat více než pět úrovní vnoření.
- Nepoužívat nadbytečné závorky v podmínkách.
- Pokud se testuje více podmínek, první by měla být podmínka výpočtově nejméně náročná.
- Jednotlivé podmínky se zapisují na samostatné řádky
Příklad:
If bCondition1 And
bCondition2 And
bCondition3 Then
Else
...
End If
Select case
- Jednotlivé volby by se měly řadit vzestupně (číselně nebo abecedně). V některých
případech závisí pořadí na frekvenci provádění voleb.
- Příkazy jednotlivých voleb by měly být co nejjednodušší a neměly by přesáhnout
pět řádků. Jinak je vhodnější pro kód napsat proceduru nebo funkci.
- Klauzule Case Else by měla být použita pro default hodnoty nebo pro ošetření výjimek.
Jednotlivé části příkazu jsou odsazeny.
Příklad:
Select case výraz
Case podmínka:
...
Case else
...
End Select
For
- Pro proměnné se používají postupně písmena i,j,k,l,…., nebo název odpovídající významu
např.: iIndex, iUser, ….
- Jednotlivé vložené cykly jsou odsazeny.
Příklad:
For i = 1 To 10
For j = 1 To 10
For k = 1 To 10
...
Next k
Next j
Next i
- Jména souborů by měla obsahovat jeho význam. Velikost písmen viz procedury.
- Jména se tvoří podle masky:
SSS*CCC*.EXT
kde:
SSS* je název části projektu, kterého se soubor týká
CCC* je podnázev upřesňující význam souboru
EXT je standardní přípona FRM/FRX,BAS,CLS,…
- Jméno formuláře/modulu by mělo odpovídat významu např. MainForm
Standardní názvy:
MainForm pro hlavní formulář aplikace
AboutForm pro formulář O aplikaci
LoginForm pro přihlašovací formulář
- Pokud to není nezbytné, měl by se automaticky vytvářet pouze MainForm
ostatní formuláře dynamicky.
- Soubor by neměl obsahovat více než 1000 řádků.
- Používají se komentáře:
- Hlavička souboru
Příklad:
’*************************************************************
’
’ Název souboru (Účel souboru)
’
’ Projekt
’
’ Copyright (c) 2001 RTS CS s.r.o.
’ contact@rtscs.cz
’
’ Popis
’
’ Závislosti (modul, komponenty, ...
’
’
’ Historie změn:
’ Datum Autor Popis změny
’ 01.05.2001 Mr.X vytvořil
’
’*************************************************************
’ Seznam úkolů: např.:,které jsou rozdělané nebo se musí ’udělat….
’
’************************************************************/
- Hlavička funkce nebo procedury
Příklad:
’*************************************************************
’
’ Jméno funkce
’ Popis funkce
’ Popis vstupních parametrů:
’ Return code:
’
’ Historie změn:
’ Datum Autor Popis změny
’ 01.05.2001 Mr.X vytvořil
’
’************************************************************/
Function iFind (sUserList() As String, sTargetUser As String) As Integer
Dim iCount As Integer ' Popis proměnné
Dim bFound As Integer ' Popis proměnné
' Popis funkčního bloku
iFind = -1
iCount = 0
' Popis funkčního bloku
While iCount <= Ubound(sUserList) and Not bFound
If sUserList(iCount) = sTargetUser Then
bFound = True
iFind = iCount
End If ' sUserList(iCount) = sTargetUser
iCount = iCount + 1
Wend ' iCount <= Ubound(sUserList) and ...
End Function
- Popis deklarace proměnných
Příklad:
Dim
iI As Integer ’popis proměnné
iJ As Integer ’popis proměnné
sWord As string ’popis proměnné
dbData As Database ’popis proměnné
bIsOK As Boolean ’popis proměnné
Příklad:
(mezera)
' cyklus …
For i = 1 To 10
For j = 1 To 10
For k = 1 To 10
...
Next k
Next j
Next i
- Komentář bloku if, select, while, for je-li třeba na konec vložit komentář
s obsahem odpovídajícího příkazu
Příklad:
While iCount <= Ubound(sUserList) and Not bFound
If sUserList(iCount) = sTargetUser Then
bFound = True
iFind = iCount
End If ' sUserList(iCount) = sTargetUser
iCount = iCount + 1
Wend ' iCount <= Ubound(sUserList) and ...
- Jména instancí komponenty musí odpovídat jejich použití a obsahují prefix
z malých písmen definující typ pro jednodušší vyhledávání. Nepoužívat standardní
názvy generované IDE!
Prefixy standardních komponent:
Typ |
Prefix |
Příklad |
3D Panel |
pnl |
pnlGroup |
A |
|
|
ADO Data |
ado |
adoBiblio |
Animated button |
ani |
aniMailBox |
C |
|
|
Check box |
chk |
chkReadOnly |
Combo box, drop-down list box |
cbo |
cboEnglish |
Command button |
cmd |
cmdExit |
Common dialog |
dlg |
dlgFileOpen |
Communications |
com |
comFax |
Control (užívat v proc., když je určitý typ neznámý) |
ctr |
ctrCurrent |
D |
|
|
Data |
dat |
datBiblio |
Data-bound combo box |
dbcbo |
dbcboLanguage |
Data-bound grid |
dbgrd |
dbgrdQueryResult |
Data-bound list box |
dblst |
dblstJobType |
Data combo |
dbc |
dbcAuthor |
Data grid |
dgd |
dgdTitles |
Data list |
dbl |
dblPublisher |
Data repeater |
drp |
drpLocation |
Date picker |
dtp |
dtpPublished |
Directory list box |
dir |
dirSource |
Drive list box |
drv |
drvTarget |
F |
|
|
File list box |
fil |
filSource |
Flat scroll bar |
fsb |
fsbMove |
Form |
frm |
frmEntry |
Frame |
fra |
fraLanguage |
G |
|
|
Gauge |
gau |
gauStatus |
Graph |
gra |
graRevenue |
Grid |
grd |
grdPrices |
H |
|
|
Hierarchical flexgrid |
flex |
flexOrders |
Horizontal scroll bar |
hsb |
hsbVolume |
I |
|
|
Image |
img |
imgIcon |
Image combo |
imgcbo |
imgcboProduct |
ImageList |
ils |
ilsAllIcons |
L |
|
|
Label |
lbl |
lblHelpMessage |
Lightweight check box |
lwchk |
lwchkArchive |
Lightweight combo box |
lwcbo |
lwcboGerman |
Lightweight command button |
lwcmd |
lwcmdRemove |
Lightweight frame |
lwfra |
lwfraSaveOptions |
Lightweight horizontal scroll bar |
lwhsb |
lwhsbVolume |
Lightweight list box |
lwlst |
lwlstCostCenters |
Lightweight option button |
lwopt |
lwoptIncomeLevel |
Lightweight text box |
lwtxt |
lwoptStreet |
Lightweight vertical scroll bar |
lwvsb |
lwvsbYear |
Line |
lin |
linVertical |
List box |
lst |
lstPolicyCodes |
ListView |
lvw |
lvwHeadings |
M |
|
|
MAPI message |
mpmmpm |
mpmmpmSentMessage |
MAPI session |
mps |
mpsSession |
MCI |
mci |
mciVideo |
Menu |
mnu |
mnuFileOpen |
Month view |
mvw |
mvwPeriod |
MS Chart |
ch |
chSalesbyRegion |
MS Flex grid |
msg |
msgClients |
MS Tab |
mst |
mstFirst |
O |
|
|
OLE container |
ole |
oleWorksheet |
Option button |
opt |
optGender |
P |
|
|
Picture box |
pic |
picVGA |
Picture clip |
clp |
clpToolbar |
ProgressBar |
prg |
prgLoadFile |
Remote Data |
rd |
rdTitles |
R |
|
|
RichTextBox |
rtf |
rtfReport |
S |
|
|
Shape |
shp |
shpCircle |
Slider |
sld |
sldScale |
Spin |
spn |
spnPages |
StatusBar |
sta |
staDateTime |
SysInfo |
sys |
sysMonitor |
T |
|
|
TabStrip |
tab |
tabOptions |
Text box |
txt |
txtLastName |
Timer |
tmr |
tmrAlarm |
Toolbar |
tlb |
tlbActions |
TreeView |
tre |
treOrganization |
U |
|
|
UpDown |
upd |
updDirection |
V |
|
|
Vertical scroll bar |
vsb |
vsbRate |
|
Obsah:
Obecná formátovací pravidla
Basic
Soubory
Komentáře
Komponenty
|