Z trudem znajduję pragmatyczne porady w świecie rzeczywistym dotyczące konwencji nazewnictwa funkcji dla średniej wielkości projektu biblioteki C. Mój projekt biblioteczny jest podzielony na kilka modułów i podmodułów z własnymi nagłówkami i luźno podąża za stylem OO (wszystkie funkcje przyjmują pewną strukturę jako pierwszy argument, brak globałów itp.). Położyliśmy nasze coś takiego:
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
Zasadniczo funkcje są o wiele za duże, aby (na przykład) trzymać some_foo_action
i another_foo_action
w jednym foo.c
pliku implementacji ustawić większość funkcji w trybie statycznym i nazwać to dniem.
Mogę poradzić sobie z usuwaniem symboli wewnętrznych („modułu prywatnego”) podczas tworzenia biblioteki, aby uniknąć konfliktów dla moich użytkowników z ich programami klienckimi, ale pytanie brzmi: jak nazwać symbole w mojej bibliotece? Do tej pory robiłem:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Ale kończę na szalonych długich nazwach symboli (znacznie dłuższych niż w przykładach). Jeśli nie poprzedzę tych nazw „fałszywą przestrzenią nazw”, nazwy symboli wewnętrznych modułów będą się kolidować.
Uwaga: nie obchodzi mnie skrzynka na camelcase / Pascal itp., Same nazwy.
git merge
ing. Jako przykład mam moduł do rysowania UI z OpenGL, i mają oddzielne.c
pliki dla każdego elementu, który muszę (slider.c
,indicator.c
etc). Te implementacje elementów mają główną funkcję rysunkową o długości może kilkuset linii i znaczną liczbęstatic
pomocników. Wywołują także kilka funkcji czystej geometrii z poziomu modułu interfejsu użytkownika. Czy to brzmi dość typowo?