Я изо всех сил пытаюсь найти практический практический совет по соглашениям об именах функций для проекта библиотеки 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
помощников внутри. Они также вызывают несколько чисто геометрических функций из модуля пользовательского интерфейса. Это звучит довольно типично?