2011-03-09 4 views
4

난 그게 첫 번째 인자로 구조체 타입을 가지고 멋진 매크로 또는 기능 포인터 그냥 struct + 함수와 아무것도 C에서 oo 스타일 많은 기능을 찾을 수 있습니다. my_func_my_type 좋은 Logged 어떤 식 으로든 내 기능 이름 중 하나가 20 자 이상이되면?> 25 일 경우에도 스타일을 일관되게 유지해야합니까?좋은 OO 네이밍 스키마에 대한

또한 무엇이 좋은 제품입니까? 생성자/이니셜 라이저/소멸자의 이름 지정 체계 new_my_type, init_my_type, free_my_type이 더 좋을까요?

PS이/self ptr 또는 나는 보통 함수 (to_init, some_guy 등)에서와 같이 함수와 같은 OO 함수의 첫 번째 매개 변수의 이름을 지정해야합니다.

답변

3

라이브러리 이름을 접두사로 사용하는 대부분의 C 라이브러리와 일관된 스키마를 개인적으로 사용합니다. 함수. 어느 예를 들어 void MyObject_MyFunction 줄 것입니다. 건설/파괴시 일관성을 유지하고 MyObject_Construct, MyObject_Destroy을 사용할 수 있습니다. 일관성을 유지하는 한 그 이름이별로 중요하지 않다고 말할 수 있습니다.

1

'좋은'약간 주관적이지만 특정 스키마 (메서드에 구조체 이름 포함)를 선택하고 엄격하게 따르는 것이 가장 쉽다는 것을 알게되었습니다. 정말 긴 함수 이름을 피하는 경향이 있습니다. 함수가 너무 길어서 긴 이름이 필요하면 함수를 리팩토링하거나 하위 함수로 나눌 때가 있습니다. 저는 밑줄을 사용하지 않지만 그 점은 맛입니다. 여기에 사용되는 무엇의 샘플을 C : 세계에서 하나의 부족

typedef struct Discriminator 
{ 
    //members 
} Discriminator; 

DiscriminatorConstruct(Discriminator* p); 
DiscriminatorDestruct(Discriminator* p); 
DiscriminatorFunctionA(Discriminator* p, int arg1, int arg2); 
1

는, C++은 함수의 이름에 유용한 선례 제공 :

[[namespace::...]struct::]function 

C에서 네임 스페이스 어디에도 없습니다를, 그러나 당신은 단지 그것들을 관련 구조체에 의해 공유되는 접두어로 생각하고 모델링 할 수 있습니다. 가독성을 위해 별개의 명명 구성 요소를 시각적으로 구분하는 데 도움이됩니다. 함수에서 밑줄을 사용하는 것을 좋아한다면 두 개의 밑줄을 구분 기호로 사용할 수도 있습니다. (기술적으로 두 개의 밑줄이 구현을 위해 예약 될 수 있지만 밑줄이없는 접미어가없는 구현 식별자는 내부적으로 두 개의 밑줄을 두는 것을 본 적이 없다).

이름을 C++에 가깝게 유지하면 프로그래머가 두 언어를 모두 지원하고 필요한 경우 코드를 앞뒤로 마이그레이션하는 데 도움이됩니다. 마찬가지로, C++ 용어가 채택 될 수있다 : 가능 새로운생성자, 소멸자, (C 코드를 C++로 포팅하지만 무료 /의 malloc를 계속 사용하는 경우이 이름은 misnomers 될 수 있지만)을 삭제합니다. 긴 식별자의 원인이보다

IMHO는 일관되고 명확한 이름이 더 번거 로움을 절약 할 수 있지만, 뭔가 될 경우에만 권장 경우 고통은

+0

.. 같은 매크로, 인라인 래퍼 함수, 함수 포인터 등으로 지역화 된 해결 방법을 모색 C++이 대답은 불완전합니다. ** Objective-C ** ??! –

+0

@Radek : Objective-C가 설정 한 모든 선례와 함께 사용자의 회신을 자유롭게 언급하거나 게시 할 수 있습니다. 나는 결코 사용하거나 보지 않았습니다 .... –

+0

오히려 전체적으로 다른 이야기이지만 Objective-C는 꽤 많이 있습니다. 요즘 사용되었습니다. –

관련 문제