google c + + 인 코딩 규범
18129 단어 C++코드 규범구 글명명 규범프로 그래 밍 규범
google C + 프로 그래 밍 규범 이 상당히 풍부 합 니 다. 본 고 는 명명 약정 내용 만 캡 처 했 습 니 다.
헤더 파일
역할 영역
종류
google 음탕 하 다
기타 c + + 효과
명명 규칙
주석
격식.
규칙 특별 열
google 프로 그래 밍 규범 영어 사이트:
https://github.com/google/styleguide
http://google.github.io/styleguide/cppguide.html
google 프로 그래 밍 규범 중국어 사이트:
http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/
왜 google c + 프로 그래 밍 규범 을 추천 합 니까?
헝가리 명명 법의 변사 http://blog.csdn.net/fullsail/article/details/8039253
Google 코드 규범 도구 Cpplint 사용:
http://blog.csdn.net/fengbingchun/article/details/47341765
1. 명명 약정
가장 중요 한 일치 성 규칙 은 명명 관리 입 니 다. 명명 스타일 은 이름 대표 가 무엇 인지 빨리 알 수 있 습 니 다. 유형?변수함수상수거대 하 다심지어 유형 성명 을 찾 을 필요 가 없습니다. 우리 뇌의 패턴 이 엔진 과 일치 하면 이 명명 규칙 들 을 매우 믿 을 수 있 습 니 다.
명명 규칙 은 일정한 임 의성 을 가지 지만 개인의 취향 에 따라 명명 하 는 것 보다 일치 성 이 더 무 겁 기 때문에 아무리 생각해 도 규칙 은 어쨌든 규칙 이다.
1.1. 일반적인 명명 규칙
Tip
함수 이름, 변수 이름, 파일 이름 은 설명 이 있어 야 합 니 다.줄 임 말 을 적 게 쓰다.
가능 한 한 묘사 적 인 이름 을 지어 주 고 공간 을 아 끼 지 마 세 요. 코드 를 새로운 독자 들 이 이해 하기 쉽게 하 는 것 이 중요 하기 때 문 입 니 다.프로젝트 개발 자 만 이해 할 수 있 는 줄 임 말 을 쓰 지 말고 몇 개의 자 모 를 잘라 서 단 어 를 줄 이지 마 세 요.
int price_count_reader; //
int num_errors; // “num”
int num_dns_connections; // “DNS”
Warning
int n; // 。
int nerr; // 。
int n_comp_conns; // 。
int wgc_connections; // 。
int pc_reader; // "pc" 。
int cstmr_id; // 。
1.2. 파일 이름
Tip
파일 이름 은 모두 소문 자로 되 어 있 습 니 다. 밑줄
_
이나 하이픈 -
을 포함 할 수 있 습 니 다. 항목 에 따라 약속 합 니 다. 항목 에 대한 약속 이 없 으 면 ""더 좋다.받 아들 일 파일 이름:
* my_useful_class.cc
* my-useful-class.cc
* myusefulclass.cc
* muusefulclass_test.cc // ``_unittest`` ``_regtest`` 。
C + + 파일
.cc
헤더 파일 .h
끝. 텍스트 만 삽입 하 는 파일 은 .inc
마지막, 참조: ref: self - contained headers.이미 존재 하 는
/usr/include
다음 파일 이름 (Yang. Y 주: 컴 파일 러 검색 시스템 헤더 파일 의 경로), 예 를 들 어 db.h
.보통 파일 이름 을 최대한 명확 하 게 해 야 한다.
http_server_logs.h
... 에 비하 면 logs.h
좋 습 니 다. 클래스 를 정의 할 때 파일 이름 이 쌍 으로 나타 납 니 다. 예 를 들 어 foo_bar.h
화해시키다 foo_bar.cc
FooBar
. 내 연 함 수 는 반드시 두 어야 한다.
.h
파일 에 있 습 니 다. 내 연 함수 가 짧 으 면 바로 놓 습 니 다. .h
가운데1.3. 형식 이름
Tip
형식 이름 의 모든 단어 이니셜 은 대문자 로 밑줄 을 포함 하지 않 습 니 다.
MyExcitingClass
, MyExcitingEnum
. 모든 유형의 이름 - 클래스, 구조 체, 유형 정의
typedef
, 매 거 진 - 모두 같은 약속 을 사용 합 니 다. 예 를 들 어:// classes and structs
class UrlTable { ...
class UrlTableTester { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties *, string> PropertiesMap;
// enums
enum UrlTableErrors { ...
1.4. 변수 이름
Tip
변수 이름 은 일률적으로 소문 자로 되 어 있 으 며, 단어 간 에 밑줄 로 연결 되 어 있 습 니 다. 클래스 의 구성원 변 수 는 다음 과 같이 밑줄 로 끝 나 지만 구조 체 는 사용 하지 않 습 니 다. 예 를 들 어:
a_local_variable
, a_struct_data_member
, a_class_data_member_
. 일반 변수 이름:
예:
string table_name; // - 。
string tablename; // - 。
Warning
string tableName; // - 。
클래스 데이터 멤버:
정적 이 든 비 정적 이 든 클래스 데이터 구성원 은 일반 변수 와 같 을 수 있 지만 밑줄 을 연결 해 야 합 니 다.
class TableInfo {
...
private:
string table_name_; // - 。
string tablename_; // 。
static Pool<TableInfo>* pool_; // 。
};
구조 체 변수:
정적 이 든 비 정적 이 든 구조 체 데이터 구성원 은 일반 변수 와 마찬가지 로 클래스 처럼 밑줄 을 긋 지 않 아 도 됩 니 다.
struct UrlTableProperties {
string name;
int num_entries;
}
구조 체 와 클래스 의 토론 참고 구조 체 vs. 클래스 한 마디.
전역 변수:
전역 변수 에 대한 특별한 요구 없 이 적 게 사용 하면 되 지만, 사용 하려 면 사용 할 수 있 습 니 다.
g_
부분 변 수 를 잘 구분 할 수 있 도록 다른 플래그 를 접두사 로 사용 합 니 다.1.5. 상수 이름
Tip
전역 또는 클래스 의 상수 이름 앞 에 추가
k
: kDaysInA Week. 그리고 시작 을 제외 한 k
그 밖 에 모든 단어의 이니셜 은 모두 대문자 이다.모든 컴 파일 시 상수 입 니 다. 국부 적 이 든 전체 적 이 든 클래스 적 이 든 다른 변수 와 조금 다 릅 니 다.
k
대문자 로 시작 하 는 단어:const int kDaysInAWeek = 7;
이 규칙 은 컴 파일 할 때의 국부 작용 역 상수 에 적용 되 지만 변수 규칙 에 따라 명명 해도 된다.
1.6. 함수 이름
Tip
일반적인 함 수 는 대소 문 자 를 혼합 하여 값 을 추출 하고 값 을 설정 하 는 함 수 는 변수 이름과 일치 해 야 합 니 다.
MyExcitingFunction()
, MyExcitingMethod()
, my_exciting_member_variable()
, set_my_exciting_member_variable()
. 일반 함수:
함수 이름 의 모든 단어 이니셜 은 대문자 로 밑줄 이 없다.
함수 가 잘못 되 었 을 때 바로 crash 를 해 야 한다 면 함수 이름 에 Ordie 를 추가 하 십시오. 그러나 이 함수 자 체 는 제품 코드 에 통합 되 어야 하 며 평소에 도 오류 가 발생 할 수 있 습 니 다.
AddTableEntry()
DeleteUrl()
OpenFileOrDie()
수치 와 설정 함수:
값 (Accessors) 과 설정 값 (Mutators) 함 수 는 액세스 하 는 변수 이름과 일치 해 야 합 니 다. 클래스 를 발췌 합 니 다.
num_entries_
이 종류의 인 스 턴 스 변수 입 니 다:class MyClass {
public:
...
int num_entries() const { return num_entries_; }
void set_num_entries(int num_entries) { num_entries_ = num_entries; }
private:
int num_entries_;
};
다른 아주 짧 은 내 연 함수 이름 도 소문 자 를 사용 할 수 있 습 니 다. 예 를 들 어 순환 에서 이러한 함 수 를 호출 하거나 되 돌아 오 는 값 을 캐 시 하지 않 으 면 소문 자 이름 을 받 아들 일 수 있 습 니 다.
1.7. 이름 공간 이름
Tip
이름 공간 은 소문 자로 이름 을 짓 고 프로젝트 이름과 디 렉 터 리 구 조 를 기반 으로 합 니 다.
google_awesome_project
. 이름 공간 에 대한 토론 과 이름 을 어떻게 짓 는 지 참고 하 십시오. 이름 공간 한 마디.
1.8. 매 거 명명
Tip
매 거 된 명명 은 마 땅 히 상수 혹시 거대 하 다. 일치:
kEnumName
혹은 ENUM_NAME
. 단독 매 거 진 값 은 우선적으로 채택 해 야 한다 상수 이름 거대 하 다. 방식 의 명명 도 받 아들 일 수 있다.
UrlTableErrors
(및 AlternateUrlTableErrors
유형 이 므 로 대소 문자 로 섞 어야 합 니 다.enum UrlTableErrors {
kOK = 0,
kErrorOutOfMemory,
kErrorMalformedInput,
};
enum AlternateUrlTableErrors {
OK = 0,
OUT_OF_MEMORY = 1,
MALFORMED_INPUT = 2,
};
2009 년 1 월 이전에 우 리 는 줄곧 채용 을 건의 해 왔 다. 거대 하 다. 매 거 진 값 을 명명 합 니 다. 매 거 진 값 과 매크로 간 의 명명 충돌 로 인해 많은 문제 가 발생 했 습 니 다. 이 를 통 해 상수 스타일 을 우선 선택 하 는 명명 방식 으로 바 뀌 었 습 니 다. 새 코드 는 가능 한 한 상수 스타일 을 우선 사용 해 야 합 니 다. 그러나 오래된 코드 는 상수 스타일 로 전환 할 필요 가 없습니다. 매크로 스타일 이 컴 파일 기간 에 문제 가 발생 하지 않 는 한.
1.9. 매크로 이름
Tip
ref: 宏 < preprocessor - macros > 를 사용 할 생각 은 없 으 시 죠?만약 당신 이 꼭 사용 해 야 한다 면, 이렇게 명명 하 세 요:
MY_MACRO_THAT_SCARES_SMALL_CHILDREN
.참고: ref: 매크로 < preprocessor - macros > 를 미리 처리 합 니 다.보통 ... 해 서 는 안 된다 매크로 를 사용 합 니 다. 사용 하지 않 으 면 이름 을 매 거 진 이름 처럼 대문자 로 표시 하고 밑줄 을 사용 합 니 다.
#define ROUND(x) ...
#define PI_ROUNDED 3.0
1.10. 명명 규칙 의 특례
Tip
이름 이 있 는 실체 가 기 존 C / C + + 실체 와 비슷 하 다 면 기 존 이름 정책 을 참고 하 십시오.
bigopen()
: 함수 명, 참조
open()
형식uint
: typedef
bigpos
: struct
혹시 class
, 참조 pos
형식sparse_hash_map
: STL 유사 실체;STL 명명 약정 참조
LONGLONG_MAX
: 같다
INT_MAX
번역자 (acgtyrant) 노트
Google 은 간단 한 클래스 Query Result 를 쓰 고, 그 다음 에 변 수 를 query 로 직접 정의 할 수 있 는 이름 지정 약속 이 매우 훌륭 한 것 같 습 니 다.result, 구분 도 좋 음;다시 한 번, 클래스 내 변수 아래 의 밑줄 친 끝 에 같은 이름 의 형 삼 을 직접 전달 할 수 있 습 니 다. 예 를 들 어 TextQuery:: TextQuery (std: string word): word{}, 그 중
word_
자연 은 유형 내 사유 구성원 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.