Estou lutando para encontrar conselhos pragmáticos do mundo real sobre convenções de nomenclatura de funções para um projeto de biblioteca C de tamanho médio. Meu projeto de biblioteca é separado em alguns módulos e submódulos com seus próprios cabeçalhos e segue um estilo OO (todas as funções assumem uma certa estrutura como primeiro argumento, sem globais etc). É colocado nosso algo como:
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
Geralmente as funções são muito grandes demais para (por exemplo) vara some_foo_action
e another_foo_action
em um foo.c
arquivo de implementação, fazer mais funções estático, e chamá-lo um dia.
Posso lidar com a remoção de meus símbolos internos ("módulo privado") ao criar a biblioteca para evitar conflitos para meus usuários com seus programas clientes, mas a questão é como nomear símbolos na minha biblioteca? Até agora eu venho fazendo:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Mas estou terminando com nomes de símbolos longos e loucos (muito mais do que os exemplos). Se eu não prefixo os nomes com um "espaço para nome falso", os símbolos internos dos módulos são todos conflitantes.
Nota: Eu não ligo para o caso camelcase / Pascal, etc., apenas os nomes em si.
git merge
ing. Como exemplo, tenho um módulo para desenhar a interface do usuário com o OpenGL e tenho.c
arquivos separados para cada elemento que preciso (slider.c
,indicator.c
etc). Essas implementações de elementos têm uma função principal de desenho, talvez com algumas centenas de linhas e um bom número destatic
auxiliares. Eles também chamam algumas funções de geometria pura de dentro do módulo de interface do usuário. Isso soa bastante típico?