Венгерская нотация

Венгерская нотация – это соглашение о наименовании переменных и функций.

Это соглашение широко используется при программировании в среде 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 и в большом числе программ, распространяемых в исходном виде.