|
Hungarian Notation
Inleiding
De Hungarian Notation is een programmeer stijl, waarbij de
gebruikte namen van funkties, variabelen, macro's, structuren en type
definities zeer systematisch worden opgebouwd.
Funktie namen
Bij deze notatiewijze is het gebruikelijk alle funktie namen op te
delen in lettergroepen. Elke lettergroep begint met een hoofdletter en
bestaat verder uit kleine letters. Er wordt geen gebruik gemaakt van de
onderstreping (_). Verder is het gebruikelijk een combinatie te maken
van een werkwoord en een zelfstandig naamwoord.
Voorbeelden funktienamen:
- LeesScherm ()
- ProgrammaInitialisatie ()
- VerwerkSpel ()
Variable namen
Ook variabele namen wordt opgedeeld in lettergroepen op de manier zoals
boven beschreven, echter deze worden vooraf gegaan door een code die
een aanduiding is voor het type van de variabele. Hieronder volgt een
opsomming van mogelijke codes en hun betekenis. Deze zijn alle in het
Engels opgesteld, omdat deze notatie wijze internationaal is.
| Code | Betekenis |
| a | array |
| b | byte |
| c | counter |
| ch | char |
| d | double |
| f | flags / booleans |
| fn | function |
| h | handle |
| i | index en/of int |
| id | identifier |
| l | long |
| off | offset |
| p | pointer (*) |
| r | real (float) |
| s | short |
| sz | string terminated by zero ('\0') |
| u | unsigned |
Voorbeelden variabele namen:
| Variabele | Naam |
| char | szString[12]; |
| char | chInvoer; |
| int | cRegelTeller; |
| int | iIndex; |
| char | *pszString; |
| long | alWaardeTabel[100]; |
Macro namen
De namen van macros worden alle genoteerd in hoofdletters. Op deze
manier is altijd goed te onderscheiden of we te maken zullen krijgen
met vervanging van tekst door de pre-compiler. Om lettergroepen in een
macro te realiseren, wordt gebruik gemaakt van de onderstreping (_).
Voorbeelden macro namen:
#define BOOL char #define GOED 11 #define FOUT 12
Type definities
De programmeertaal C staat toe met eigen types te werken. In deze
cursus is van die mogelijkheid uitgebreid gebruik gemaakt. Het is zelfs
aan te raden zoveel mogelijk met eigen types te werken en deze te
noteren in hoofdletters. Als de samenstelling van een type in de loop
van de tijd mocht veranderen, hoeft alleen de bijbehorende
typedef te worden aangepast. In een Windows of OS/2
ontwikkel omgeving bijvoorbeeld, zul je altijd eigen types aantreffen.
Het wordt afgeraden met directe structuur namen te werken. Beter is het
een type definitie van een structuur te maken en tegelijk daarmee ook
een pointer type naar die structuur. Het declareren van variabelen
wordt daarmee veel eenvoudiger en met name eenduidiger.
In de onderstaande voorbeelden wordt aangetoond hoe dat er in de
praktijk uit zal zien. Allereerst worden de standaard C types door
eigen types vervangen. Tevens wordt een type voor strings toegevoegd,
hier PSZ hetgeen staat voor Pointer to
String terminated by Zero.
Bij de definitie van structuur typen wordt als volgt te werk gegaan.
Allereerst wordt een naam voor de structuur gekozen. Deze naam wordt
voorafgegaan door een onderstreping (_) en genoteerd in kleine letters
(_hlist). Dan worden de structuur members benoemd, zoveel
mogelijk met eigen types. In geval met een recursieve datastructuur
gewerkt wordt, wordt de naam van de structuur gebruikt (struct
_hlist). Het type krijgt dan de naam van de structuur in
hoofdletters (HLIST). Tenslotte wordt nog een pointer type
naar de structuur toegevoegd, met de naam van de structuur in
hoofdletters en voorafgegaan door de letter P (PHLIST).
Voorbeelden type definities:
typedef int SHORT;
typedef char CHAR;
typedef char *PSZ;
typedef struct _hlist {
SHORT sLineNr;
PSZ pszLine;
struct _hlist *pPrior;
struct _hlist *pNext;
} HLIST;
typedef HLIST *PHLIST;
In dit voorbeeld gaat het om een dubbel geketende lijst van tekstregels
waarin een Help-tekst kan worden opgeslagen.
|