Венгерская нотация – это соглашение о наименовании переменных и функций.
Это соглашение широко используется при программировании в среде Windows, так как делает код программы более понятным. Свое название венгерская нотация получила в честь родины ее создателя – Чарльза Симонаи (Charles Simonyi).
Вопрос об удобном наименовании переменных и функций является более важным, чем это кажется изначально, т.к. выбор удобного именования позволяет значительно снизить трудозатраты по созданию программы за счет уменьшения обращений к справочной информации.
Венгерская нотация основывается на следующем принципе: имена переменных должны содержать префикс, описывающий тип данных переменной. В ряде случаев, префикс может служить указателем на способ использования переменной.
Пример использования соглашения о наименовании:
achFile:Array[0…127]of Char;
lpszName:PString;
Первая переменная achFile содержит префикс, который расшифровывается как массив символов (array of characters); префикс переменной lpszName указывает на то, что переменная является указателем типа long на строку формата ASCIIZ (long pointer to string zero).
|
|
Помимо предоставления возможности сделать код программы более понятным, венгерская нотация позволяет также избежать ряда ошибок.
Например, присвоение типа: lpszName:= achFile; является допустимым, а следующее присвоение недопустимо: lpszName:= cbCount; так как префикс переменной cbCount указывает на то, что переменная должна содержать байт.
Список префиксов, наиболее часто используемых при программировании в среде Windows приводится в таблице ниже.
Префикс | Описание |
a | Массив (array) |
ch | Символ (char) |
by | Байт (byte) |
n | Целое (short/int) |
i | Целое (int) |
x, y | Целое для координат (short/int) |
cx, cy | Короткое целое для координат (short, count) |
b | Булевское (bool) |
w | Слово (word) |
l | Длинное целое (long) |
dw | Двойное слово (dword) |
fn | Функция (function) |
p | Указатель (pointer) |
s | Строка (string) |
sz | Строка, оканчивающаяся байтом 0 (string) |
Такой же принцип наименования используется при присвоении имен различным константам, но при этом в качестве префикса указывается группа принадлежности константы.
Пример: wm_XXX означает, что константа принадлежит к группе оконных сообщений (window message), а префикс константы cs_XXX указывает на ее принадлежность к группе стилей класса окна (class style).
Понимание принципов Венгерской нотации позволяет легко разбираться в смысле параметров функций Windows API и в большом числе программ, распространяемых в исходном виде.