C programming для начинающих: часть 9 – naming convention

 

Предыдущая часть.

Как вы могли заметить в предыдущих примерах – для имён констант использовались заглавные буквы:

$ 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 – операторы равенства и присваивания.