Я изо всех сил пытаюсь найти практический практический совет по соглашениям об именах функций для проекта библиотеки C среднего размера. Мой библиотечный проект разделен на несколько модулей и подмодулей со своими собственными заголовками и слабо следует стилю ОО (все функции принимают определенную структуру в качестве первого аргумента, без глобальных переменных и т. Д.). Это заложено что-то вроде:
MyLib
- Foo
- foo.h
- foo_internal.h
- some_foo_action.c
- another_foo_action.c
- Baz
- baz.h
- some_baz_action.c
- Bar
- bar.h
- bar_internal.h
- some_bar_action.c
Как правило , функции слишком велики , чтобы (например) палка some_foo_actionи another_foo_actionв одном foo.cфайле реализации, делают большинство функций статичными, и называют его в день.
Я могу справиться с удалением моих внутренних («модульных») символов при сборке библиотеки, чтобы избежать конфликтов для моих пользователей с их клиентскими программами, но вопрос в том, как назвать символы в моей библиотеке? До сих пор я делал:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Но я заканчиваю сумасшедшими длинными именами символов (намного длиннее, чем в примерах). Если я не добавлю имена к «поддельному пространству имен», имена внутренних символов модулей будут конфликтовать.
Примечание: меня не волнует случай с верблюдом / паскалем и т. Д., Только сами имена.
git mergeзагрузкой. В качестве примера у меня есть модуль для рисования пользовательского интерфейса с OpenGL, и у меня есть отдельные.cфайлы для каждого элемента, который мне нужен (slider.cиindicator.cт. Д.). Эти реализации элементов имеют основную функцию рисования длиной в несколько сотен строк и достаточное количествоstaticпомощников внутри. Они также вызывают несколько чисто геометрических функций из модуля пользовательского интерфейса. Это звучит довольно типично?