中規模のCライブラリプロジェクトの関数命名規則に関する実用的なアドバイスを見つけるのに苦労しています。私のライブラリプロジェクトは、独自のヘッダーを持ついくつかのモジュールとサブモジュールに分割され、大まかにOOスタイルに従います(すべての関数は、グローバルなどではなく、最初の引数として特定の構造体を取ります)。次のように配置します。
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
一般的に、関数は大きすぎて(たとえば)固執some_foo_action
しanother_foo_action
、1つのfoo.c
実装ファイルに入れて、ほとんどの関数を静的にして、1日で呼び出します。
ユーザーのクライアントプログラムとの競合を避けるために、ライブラリを構築するときに内部(「モジュールプライベート」)シンボルを削除することもできますが、問題はライブラリ内のシンボルの名前の付け方ですか?これまで私はやってきた:
struct MyLibFoo;
void MyLibFooSomeAction(MyLibFoo *foo, ...);
struct MyLibBar;
void MyLibBarAnAction(MyLibBar *bar, ...);
// Submodule
struct MyLibFooBaz;
void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...);
しかし、私は(例よりはるかに長い)クレイジーな長いシンボル名になってしまいました。名前の前に「偽の名前空間」を付けない場合、モジュールの内部シンボル名はすべて衝突します。
注:キャメルケース/パスカルのケースなどは気にせず、名前だけを気にします。
git merge
ingに大いに役立ちます。例として、OpenGLでUIを描画するためのモジュールが.c
ありslider.c
、必要な要素ごとに個別のファイルがあります(indicator.c
など)。これらの要素実装には、おそらく数百行のメイン描画機能と、かなりの数のstatic
ヘルパーが含まれています。また、UIモジュール内からいくつかの純粋なジオメトリ関数を呼び出します。それはかなり典型的な音ですか?