C 또는 C++로 '타입형'을 하면 언제 '_t'를 추가해야 하는가?
후행은 언제 추가해야 하는지 헷갈린다._t
로typedef
'ed type?
예를 들어 다음과 같이 하십시오.
typedef struct image image_t;
또는 다음 중 하나를 선택하십시오.
typedef struct image image;
일반적인 규칙은 무엇인가?
또 다른 예:
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type_t;
또는 다음 중 하나를 선택하십시오.
typdef enum { ARRAY_CLOSED, ARRAY_OPEN, ARRAY_HALFOPEN } array_type;
제발 나를 이해시켜 주세요.
고마워, 보다 사이도.
POSIX에서 이름으로 끝나는 이름_t
예약되어 있으므로 POSIX 시스템(예: Linux)을 대상으로 하는 경우 다음과 같이 유형을 종료하지 마십시오._t
.
나는 개인적으로 그것을 경멸한다._t
인습의그러나 당신이 일관성이 있는 한, 그것은 정말 문제가 되지 않는다.
POSIX와 같은 다른 표준에 따라 코딩하는 경우, 해당 표준에 문제가 없는지 확인한 후 해당 이름을 사용하십시오.
사용 시기_t
한번도?주요 표준(POSIX)에 의해 예약되어 있으며, 지금은 아니더라도 언젠가는 당신의 코드가 POSIX 환경에서 사용될 수도 있기 때문에,_t
나쁜 생각이야
나는 더 나아가 의 과잉 사용이라고 말하고 싶다.typedef
대체로 나쁘다.당신의 타입이 a인 경우struct
,union
또는enum
변수를 선언할 때 이 키워드를 사용하여 코드를 보다 명확하게 한다.의 사용typedef
추상화/추상화 목적을 위해 보이지 않는 기본 유형을 만들고자 할 때 가장 적합하다.표준 C의 몇 가지 훌륭한 예는 다음과 같다.size_t
,int32_t
,mbstate_t
, 그리고 stdio.FILE
.
에 대한 최악의 남용들 중 몇 가지typedef
Windows API를 통해(WORD
,DWORD
,INT
,LPSTR
등)과 입버릇(glib)gint
,gchar
, 등).동일한 용도의 표준 C 타입을 복제하는 것은 혼란스러울 뿐더러, 이러한 비표준 타입의 이름으로 모든 코드를 오염시킴으로써 개발자들을 당신의 라이브러리/플랫폼에 가두어 놓는 역할을 한다.
나는 가독성을 높이기 위해 접미사를 사용한다: _t는 t, _e는 25/30년 이후의 enums... 나는 때때로 typeef가 구조체를 정의할 때 _st를 사용한다.
나는 그것이 코드를 읽을 수 있고 표준화할 수 있도록 하는 좋은 연습이라고 생각한다. 그러면 나는 접미사를 사용할 권리를 찾는다!게다가, 지금까지 나는 접미사 _t가 예약되어 있다는 POSIX 공식 문서를 발견하지 못했다.
오래된 stdio.h는 _t를 함유하고 있다.참고 항목: grep -i "_t;" stdio.h :) POSIX 표준은 C보다 "조금" 어리다고 생각한다!
변수, 함수 등을 사용하여 원하는 대로 유형별로 좋은 이름을 선택하십시오.좋은 이름에는 코드를 읽기 어렵게 만드는 중복 정보가 포함되어 있지 않다. _좋은 이름부터 가지고 있다면 결코 도움이 되지 않는다.
그런데, typedef image image;
이건 그냥 이미지를 스스로 타이핑하게 만들 뿐이니까 말이 안 돼
나는 사용하고 있다_t
변수와 구별하기 위한 열거형 및 원시 유형의 접미사.네임스페이스에 넣었기 때문에 신경 쓰지 않는다._t
예약
그것을 정당화하기 위해서.매우 자주 변수 이름은 타이핑된 유형에 대한 암시다.맘에 들다std::size_t size;
array_t array
에 기지가 되어 있을 때 적절한 쉽다는 유형에 포함된 경우 변수의 적절한 이름을 선택하는 것이 더 쉽다는 것을 알았다._t
접미사를 붙이다그것은 또한 그것이 유형화된 원시적인 것이며, 예를 들어 클래스 같은 다른 짐승이 아니라는 것을 상기시킨다.
'Programing' 카테고리의 다른 글
공식 C 문서와 같은 것이 있는가? (0) | 2022.05.20 |
---|---|
Vue - 부모 참조를 자녀에게 소품으로 전달하는 방법? (0) | 2022.05.20 |
Vuex - 데이터 개체 속성으로 복제된 상태, 어레이 항목을 삭제할 수 없음 (0) | 2022.05.20 |
vuetify 글꼴 크기 변경 (0) | 2022.05.20 |
부에 2, 활자, 모카 및 카르마를 포함한 코드 적용 범위 (0) | 2022.05.20 |