Ich kämpfe darum, pragmatische Ratschläge zu Funktionsnamenkonventionen für ein mittelgroßes C-Bibliotheksprojekt zu finden. Mein Bibliotheksprojekt ist in einige Module und Submodule mit eigenen Kopfzeilen unterteilt und folgt lose einem OO-Stil (alle Funktionen haben eine bestimmte Struktur als erstes Argument, keine globalen Elemente usw.). Es ist unser etwas gelegt wie:
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
Im Allgemeinen sind die Funktionen viel zu groß , um (zum Beispiel) Stick some_foo_action
und another_foo_action
in einer foo.c
Implementierungsdatei, machen die meisten Funktionen statisch, und nennen ihn einen Tag.
Ich kann beim Erstellen der Bibliothek die internen ("privaten") Symbole entfernen, um Konflikte für meine Benutzer mit ihren Client-Programmen zu vermeiden. Die Frage ist jedoch, wie Symbole in meiner Bibliothek benannt werden sollen. Bisher habe ich getan:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Aber am Ende habe ich verrückte lange Symbolnamen (viel länger als die Beispiele). Wenn ich den Namen keinen "falschen Namespace" voranstelle, stoßen die internen Symbolnamen der Module aufeinander.
Hinweis: Ich interessiere mich nicht für Camelcase / Pascal usw., nur für die Namen selbst.
git merge
Verwaltung. Als Beispiel habe ich ein Modul zum Zeichnen von UI mit OpenGL und ich habe separate.c
Dateien für jedes Element, das ich brauche (slider.c
,indicator.c
etc). Diese Elementimplementierungen haben eine Hauptzeichnungsfunktion, die möglicherweise einige hundert Zeilen lang ist, und eine angemessene Anzahl vonstatic
Helfern. Sie rufen auch einige reine Geometriefunktionen innerhalb des UI-Moduls auf. Klingt das ziemlich typisch?