Sto faticando a trovare consigli pragmatici sul mondo reale sulle convenzioni di denominazione delle funzioni per un progetto di libreria C di medie dimensioni. Il mio progetto di libreria è separato in alcuni moduli e sottomoduli con le proprie intestazioni e segue in modo approssimativo uno stile OO (tutte le funzioni accettano una determinata struttura come primo argomento, nessuna globalità, ecc.). Ci piace qualcosa di simile a:
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 (per esempio) bastone some_foo_action
e another_foo_action
in un file di implementazione di foo.c
, rendono la maggior parte delle funzioni statiche e chiamiamole un giorno.
Posso occuparmi di spogliare i miei simboli interni ("modulo privato") durante la creazione della libreria per evitare conflitti per i miei utenti con i loro programmi client, ma la domanda è come denominare i simboli nella mia libreria? Finora ho fatto:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Ma finisco con nomi di simboli lunghi e pazzi (molto più lunghi degli esempi). Se non prefisso i nomi con uno "spazio dei nomi falso", i nomi dei simboli interni dei moduli sono tutti in conflitto.
Nota: non mi interessa il caso Camelcase / Pascal ecc., solo i nomi stessi.