Поместить имя параметров в прототипы функции C?

При объявлении функций на C вы должны установить прототип, в котором вам не нужно писать имя параметров. Просто с его типом достаточно.

void foo(int, char); 

Мой вопрос в том, есть ли хорошая практика также включать имена параметров?

    Да, считается хорошей практикой назвать аргументы даже в прототипах.

    Обычно у вас есть все ваши прототипы в файле заголовка, и заголовок может быть единственным, что ваши пользователи когда-либо проверяют. Поэтому наличие значимых имен аргументов – это первый уровень документации для вашего API.

    Точно так же комментарии о том, что делают функции (а не как они реализованы, конечно), должны идти в заголовке вместе с их прототипами.

    Хорошо написанный заголовочный файл может быть самой важной частью вашей библиотеки!


    В качестве любопытной стороны, констатация аргументов является детализацией реализации. Поэтому, если вы не мутируете переменную аргумента в своей реализации, const только const в реализацию:

     /* Header file */ /* Computes a thingamajig with given base * in the given number of steps. * Returns half the thingamajig, or -1 on error. */ int super_compute(int base, int steps); 

     /* implementation file */ #include "theheader.h" int super_compute(const int base, int steps) { int b = 2 * base; while (--steps) { b /= 8; } /* no need for a local variable :-) */ return -1; } 

    Я определенно рекомендую включать имена параметров. Если вы пишете библиотеку, это, безусловно, полезно для тех, кто будет использовать вашу библиотеку, чтобы узнать, что делает функция из своего прототипа в ваших заголовочных файлах. Рассмотрим memcpy например. Без названий параметров вы потеряете информацию о том, что является источником, а какой целью. Наконец, проще включать имена, чем удалять их, когда вы копируете свое определение функции, чтобы превратить его в прототип. Если вы сохраните имена, вам нужно добавить точку с запятой в конце.

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