중형 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
하나 개 foo.c
, 구현 파일 대부분의 기능 정적을하고, 하루에 전화.
클라이언트 프로그램과 사용자의 충돌을 피하기 위해 라이브러리를 빌드 할 때 내부 ( "모듈 개인") 심볼을 제거 할 수 있지만 문제는 라이브러리에서 심볼의 이름을 지정하는 방법입니다. 지금까지 나는하고있다 :
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 모듈 내에서 몇 가지 순수한 지오메트리 함수를 호출합니다. 그게 꽤 전형적인가요?