Orta büyüklükte bir C kütüphane projesi için işlev adlandırma kuralları hakkında pragmatik gerçek dünya tavsiyesi bulmakta zorlanıyorum. Kütüphane projem, kendi başlıkları ile birkaç modüle ve alt modüle ayrılmıştır ve gevşek bir şekilde OO stilini izler (tüm işlevler, ilk argüman olarak belirli bir yapı alır, global yok vb.). Bizim gibi bir şey koydu:
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
Genellikle işlevler (örneğin) yapışmak için çok büyüktür some_foo_action
ve another_foo_action
bir foo.c
uygulama dosyasında, çoğu işlevi statik hale getirin ve bir gün olarak adlandırın.
Kullanıcılarımın istemci programlarıyla çakışmaları önlemek için kitaplığı oluştururken dahili ("modül özel") simgelerimi çıkarmayla başa çıkabilirim, ancak soru kitaplığımdaki sembollerin nasıl adlandırılacağıdır? Şimdiye kadar yapıyorum:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
Ama ben son derece çılgın sembol isimleriyle bitiyorum (örneklerden çok daha uzun). İsimlere "sahte ad alanı" ön eki koymazsam, modüllerin dahili sembollerinin tümü çakışır.
Not: Camelcase / Pascal davası vb. Umurumda değil, sadece isimlerin kendileri.
git merge
ing. Bir örnek olarak OpenGL ile UI çekilmesi için bir modüle sahip, ve ayrı,.c
I (gereken her bir eleman için dosyaslider.c
,indicator.c
vs.). Bu eleman uygulamaları, belki de birkaç yüz satır uzunluğunda bir ana çizim fonksiyonuna vestatic
içinde çok sayıda yardımcıya sahiptir. Ayrıca UI modülünden birkaç saf geometri fonksiyonu çağırırlar. Bu kulağa oldukça tipik geliyor mu?