LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

На каждый вопрос есть несколько ответов, какждый из них правильный в рамках какой-то субкультуры разработки.

именование структур, полей, функций

обычно всё змеиным_кейсом, но иногда ИменаСтруктурТакие

кто должен отвечать за выделение/освобождение памяти?

Иногда делается функция make_thing, которая выделяет память и инициализирует thing (аналог new), иногда - init_thing, которая работает с уже выделенной памятью,

Нужны ли свои init/destroy или пусть человек сам мучается?

Нужны.

какие типы лучше использовать? int vs int32_t.

Во внешних интерфейсах - с явно указанной разрядностью.

как возвращать ошибки?

-1 или NULL; для тех, кто угорел по ядру - в младших битах невалидного указателя можно передавать код ошибки.

Есть еще стиль errno/SetLastError, но лично я желаю всего плохого тем, кто будет его продвигать.

нужны ли фукнции для инициализации нетривиальных структур?

Это тот же вопрос, что и выше.

Исходная версия tailgunner, :

На каждый вопрос есть несколько ответов, какждый из них правильный в рамках какой-то субкультуры разработки.

именование структур, полей, функций

обычно всё змеиным_кейсом, но иногда ИменаСтруктурТакие

кто должен отвечать за выделение/освобождение памяти?

Иногда делается функция make_thing, которая выделяет память и инициализирует thing (аналог new), иногда - init_thing, которая работает с уже выделенной памятью,

Нужны ли свои init/destroy или пусть человек сам мучается?

Да.

какие типы лучше использовать? int vs int32_t.

Во внешних интерфейсах - с явно указанной разрядностью.

как возвращать ошибки?

-1 или NULL; для тех, кто угорел по ядру - в младших битах невалидного указателя можно передавать код ошибки.

Есть еще стиль errno/SetLastError, но лично я желаю всего плохого тем, кто будет его продвигать.

нужны ли фукнции для инициализации нетривиальных структур?

Это тот же вопрос, что и выше.