Следующая:Naming Conventions, Следующая:, Предыдущая:System Dependence, Вверх:Hacking



Naming Conventions

Соглашение о именовании

Я (автор) использую модифицированное венгерское соглашение об именах моих переменных и функций. Как и со всеми соглашениями об обозначениях, если вы не знакомы с этими соглашениями код довольно непрозрачен, но со временем становится ясным и удобным для использования.

Первый символ указывает тип переменной (или функции, которая возвращает указанное значение). Иногда используются дополнительные символы. Я (автор) использую следующие префиксы:

a
массив; следующий символ задает тип элемента массива
b
байт или символ
c
количество чего либо
e
stdio FILE *
f
булевский (boolean)
i
целое число
l
двойной
o
файловый дескриптор (как выдается функциями open, create и т.д.)
p
общий указатель
q
указатель на структуру
s
структура
u
void (функция возвращает только значения)
z
символьная строка

Указатель p - это иногда void *, иногда указатель на функцию, в этом случае префикс равен pf, а иногда указатель на другой тип, в этом случае следующий символ - тип, на который указывает этот указатель.

Массив строк (char * []) может именоваться как az (массив строк). Если данный массив передается в функцию, то параметр функции именуется как paz (указатель на массив строк).

Oбратите внимание, что префикс переменной не обязательно указывает на тип переменной. Например, переменная prefixed с префиксом i может быть int, long или short. Точно так же переменная с префиксом b может быть типа char или int; например, значение возвращаемое функцией getchar может быть записано в переменную int с префиксом b.

Для нелокальных переменных (extern или static на уровне файла), первый символ после префикса должен быть заглавной буквой.

Большинство статических переменных и функций используют другие буквы после приставки типа, для того чтобы указать, в каком модуле данные переменные определены. Это позволяет отличить различные имена в отладчике. Например, все статические функции в файле protg.c g протокола, используют приставку модуля g. Это - не слишком полезно, поскольку множество модулей использует приставку модуля s.