Faccio fatica a trovare consigli pragmatici nel mondo reale sulle convenzioni di denominazione delle funzioni per un progetto di biblioteca C di medie dimensioni. Il mio progetto di libreria è diviso in alcuni moduli e sottomoduli con le loro intestazioni e segue vagamente uno stile OO (tutte le funzioni assumono una certa struttura come primo argomento, niente globali ecc.). Ha posto il nostro qualcosa come:
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
Generalmente le funzioni sono troppo grandi per (ad esempio) incollare some_foo_action
e another_foo_action
in un foo.c
file di implementazione, rendere la maggior parte delle funzioni statiche e chiamarlo un giorno.
Posso occuparmi di rimuovere i miei simboli interni ("modulo privato") quando creo la libreria per evitare conflitti per i miei utenti con i loro programmi client, ma la domanda è come nominare i simboli nella mia biblioteca? Finora ho fatto:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Ma sto finendo con nomi pazzi di simboli lunghi (molto più lunghi degli esempi). Se non prefisso i nomi con uno "spazio dei nomi falso", i nomi dei simboli interni dei moduli si scontrano tutti.
Nota: non mi interessa il caso di camelcase / Pascal ecc., Solo i nomi stessi.
git merge
ing. Ad esempio, ho un modulo per disegnare l'interfaccia utente con OpenGL e ho.c
file separati per ogni elemento di cui ho bisogno (slider.c
,indicator.c
ecc.). Queste implementazioni di elementi hanno una funzione di disegno principale lunga forse qualche centinaio di righe e un numero equo distatic
helper all'interno. Chiamano anche alcune funzioni di pura geometria all'interno del modulo UI. Sembra abbastanza tipico?