Как вы могли заметить в предыдущих примерах – для имён констант использовались заглавные буквы:
$ cat constants.c | grep 'define\|PI' #define PI 3.14 #define PI 5.0 const double C_PI = 3.14159265358979323846; printf("My math: %f\n", PI); printf("My math: %f\n", M_PI); C_PI = 100; printf("My math: %.10f\n", C_PI);
А слова в именах – разделяются символом подчёркивания – M_PI
.
Давайте рассмотри ещё один пример кода:
#include <stdio.h> #define somevalue 10 #define some_other_value 15 #define SERVICE_CHARGE 33 int do_something( int x ) { return x + somevalue; } int Do_Something( int x ) { return x + some_other_value; } int calculate_grand_total( int subtotal ) { int grand_total; grand_total = subtotal + SERVICE_CHARGE; return grand_total; } int main(int argc, char **argv) { printf("%d\n",do_something(500)); printf("%d\n",Do_Something(600)); printf("%d\n",calculate_grand_total(700)); return 0; }
Использование заглавных букв с разделением имён с помощью “_
” – общепринятое соглашение в C.
Кроме того, в C принято следующее:
- используйте строчные буквы в именах переменных:
#define somevalue 10
- используйте строчные буквы в именах функций:
int calculate_grand_total()
- используйте символ “
_
” для резделения имени, если оно состоит из нескольких слов:
grand_total
- многие программисты предпочитают использовать строные буквы и для имён аргументов:
( int subtotal )
Тем не менее – оно остаётся только соглашением, но не строгим правилом – вы можете использовать заглавные буквы для разделения имени, например – subTotal
, вместо sub_total
.
Однако помните, что как ивсё в Unix/Linux – C вляется регистро-зависимым языком: subTotal
и subtotal
будут являться двумя разными именами.
Например функции:
... int do_something( int x ) { return x + somevalue; } int Do_Something( int x ) { return x + some_other_value; } ...
И вызываются они как две различные функции, с различными аргументами:
... printf("%d\n",do_something(500)); printf("%d\n",Do_Something(600)); ...
Проверяем:
[simterm]
$ ./naming 510 615 733
[/simterm]
Описательные имена
Ещё один очень важный момент при выборе имени переменой или имени функции – это её смысловое значение.
Например:
... int myfunc(int z) { int t; t = z + v; return t; } ...
И другой вариант имён:
... int calculate_grand_total( int subtotal ) { int grand_total; grand_total = subtotal + SERVICE_CHARGE; return grand_total; } ...
Обе функции рабочие, но имена во второй дают намного более чёткое представление о данных в переменных и о роли и действии самой функции. Имена не играют никакой роли для компилятора – но помогут и вам и другим девелоперам разобраться в вашей программе.
Итак – применяйте в имени функции её роль, те. – что_функция_делает?, а для пременных и параметров – данные, которые в них хранятся – что_тут_хранится?
Продолжение – часть 10 – операторы равенства и присваивания.