Naamgeving (syntax)

Gambas Naming Conventions

De naamgevingsafspraken worden niet strikt opgelegd door de compiler. Maar programma’s die deze conventies volgen zijn gemakkelijker te lezen door andere programmeurs.

Variable names

Het underscore teken _ wordt voorbehouden voor de IDE waar het de scheiding vormt tussen een element in de grafische omgeving en een bewerking erop als “klikken”:

lsbxName_Click

Een punt wordt gebruikt voor de eigenschap van zo’n element:

lsbxName.text

Alle “private” variabele namen van een “class” beginnen met het dollarteken $
en kunnen binnen de class overal gebruikt worden; hier ter vergelijking een parameter met dezelfde naam:
(ps private functie of precedure wordt niet aangegeven door een begin-$)

FCommit.class
PRIVATE $sChange AS String
...
PUBLIC SUB Run(sChange AS String) AS Boolean
$sChange = sChange

Ps. ook gecombineerd met h komt er een $ voor:


Private $hTree As TreeView

Bij variabelen wordt met een eerste letter het type aangegeven, behalve bij

  • de publieke eigenschappen (variabelen) van een classe
  • de PROPERTY in een classe
  • de PRIVATE CONST worden met hoofdletters geschreven

(blijkt uit de source van de IDE).

De eerste kleine letter geeft het type van variabele aan:

Letter Type
a Array
b Boolean
c Collection
f Float
h Object (Handle)
i Integer,Long,Short,Byte.
n An integer storing a number of objects.
s String
as array of strings
Voorbeeld
PRIVATE $iLast AS Integer
PRIVATE $sLast AS String
PRIVATE $hEditor AS Object
PRIVATE $sOldVal AS String
PRIVATE $bFreeze AS Boolean
'
PUBLIC FUNCTION getData (cDataCol AS Collection) AS Collection
  DIM sInputString AS String
  DIM hFileIn AS File
  DIM sFileName AS String
  DIM asItems AS String[]
 ...
PUBLIC SUB Form_Resize()
  DIM iWidth AS Integer
...
'FForm.class
PUBLIC Name AS String
PRIVATE doeDitEnDat(sParameter AS String) AS BOOLEAN
  ...
PRIVATE $bDoNotModify AS Boolean

Form element names

Als je in de Gambas-IDE een nieuw element op een “form” maakt, krijgt het een naam als “Label1” “Label2” …

Nog voor je een “methode” toewijst aan (code schrijft voor) het nieuwe element hernoem je het best zo “btnStart” or “lstAddressSelect”.

De eerste twee à drie letters zijn klein en geven het type aan volgens onderstaande definitie:
Form-Elements Officieel:

Letter Type
btn button
chk CheckBox
cvw ColumnView
cmb ComboBox
dwg DrawingArea
dlg FontChooser
edt GambasEditor
frm Frame
grd GridView
spl HSplit
iv IconView
lbl Label
lst ListBox
lvw ListView
pan Panel
img PictureBox
opt RadioButton
svw ScrollView
spb SpinBox
tab TabStrip
tim Timer
txa TextArea
txt TextBox
txv TextView
tbt ToolButton
trv TreeView
spl VSplit

Een project dat deze stijlvoorschriften volgt is
gambas2-1.9.28/ apps/src/gambas2

De Gambas IDE zelf!

Nadeel:

  • beetje inconsequent 2 à 3 letters is niet vast: iv = iconview en grd = gridview
  • bij lst kan je niet onmiddellijk zien of het listbox of lstview is
  • is frm Frame of Form?
Een kleine afwijking:
Zelf hou ik meer van een vaste combinatie van twee letters.
Een samengestelde krijgt vast 4 letters.

Letter Type
bt button
tb togglebutton
bx box
vw View
ae area
lb label
fr frame
pn pannel
sl slider
st strip
sp split
samen- gesteld:
txbx textbox
vlbx valuebox
lsbx listbox
txlb textlabel
txae textarea
grvw gridview
scbr scrollbar
prbr progressbar
cmbx combobox
chbx checkbox
clvw columnview
1 Hoofdletter * vrij voor:
M Module
F Form
C Class
(Dat Data)
(Sql SQL statement)

(*) Linkse kolom die hiërarchie toont in IDE is smal.
1 Hoofdletter is genoeg, er is geen verwarring mogelijk.
Rest van de ruimte beter te gebruiken om relevante namen te geven aan de Forms, Modules en Classes.
(ik gebruikte voordien 3 letters: FrmKlant ClsFactuur, ModCommon)

Upd: area heb ik vervangen door “ae” (ipv ar, wat te veel op array lijkt).
En dan wordt textarea: txae

From the Gambas Documentation – see Gambas website

Constant

Een Public Const wordt in hoofdletters geschreven:


Public Const KEY_SOURCE As String = "$S"

Uit CProjectTree.class (source op GitLab)

Read en Write Methodes
Voor de naamgeving van methods, bepaalde procedures binnen objecten, geldt een naamgeving voor READ en WRITE:

' Gambas class file
'
Property Read Name As String
' dit is de property Name
Private $sName As String
' deze variabele - $ dus private - wordt intern gebruikt door het programma van de klasse
Private Function Name_Read() As String
' Name van property, _Read toegevoegd, deze functie is nu private maar zou evengoed public kunnen zijn.
Return $sName
' de variabele die intern gebruikt en gemanipuleerd wordt blijft afgeschermd en wordt enkel hier als waarde doorgespeeld naar buiten.
End
'

Automatisch aanvullen

Als je in de IDE tikt:
Property Read sName As String

en “enter” doet, wordt automatisch in de editor volgende code toegevoegd:

Private Function sName_Read() As String
 
  ..
 
End

Als je in de IDE tikt:
Property sNickname As String

dan wordt aangevuld met:

Private Function sNickname_Read() As String
 
  ..
 
End
 
Private Sub sNickname_Write(Value As String)
 
  ..
 
End

Zie ook broncode Gambas3 IDE op https://gitlab.com/gambas/gambas, bv CProjectInfo.class

Zie ook Gambas Index

Leave a Reply