Венгерская нотация - метод наименования переменных в программировании, при котором к идентификатора переменной или функции добавляется префикс, указывающий на его тип.
Например, префикс p добавляется в идентификаторов указателей ( англ. pointer ), sz - до идентификаторов символьных строк ( англ. string ), заканчивающиеся на ноль и т.д..
Преимуществом венгерской нотации является системность, что облегчает чтение программ и уменьшает вероятность неправильного использования переменной. Была популярна в 90-х среди программистов Microsoft, где данная нотация была внутренним стандартом.
Недостатком является то, что при изменении типа переменной название теряет смысл и не указывает на тип переменной, которая требует введения новой переменной.
Префиксы, задающие тип
Префикс |
Сокращение от |
Смысл |
Пример |
s |
string |
Строка |
sClientName |
sz |
zero-terminated string |
Строка, ограниченный нулевым символом |
szClientName |
n, i |
int |
Целочисленная переменная |
nSize, iSize |
l |
long |
длинное целое |
lAmount |
b |
boolean |
булева переменная |
bIsEmpty |
a |
array |
массив |
aDimensions |
t, dt |
time, datetime |
время и дата |
tDelivery, dtDelivery |
p |
pointer |
Указатель |
pBox |
lp |
long pointer |
двойной (дальний) указатель |
lpBox |
r |
reference |
ссылка |
rBoxes |
h |
handle |
дескриптор |
hWindow |
m_ |
member |
переменная-член класса |
m_sAddress |
g_ |
global |
глобальная переменная |
g_nSpeed |
C |
class |
класс |
CString |
T |
type |
тип |
TObject |
I |
interface |
интерфейс |
IDispatch |
v |
void |
отсутствие типа |
vReserved |
Как видим из примера, префикс может быть и составным. Например, для именования строчной переменной-члена класса может быть использована комбинация «m» и «s»: (m_sAddress ).