google 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
형식 이름 의 모든 단어 이니셜 은 대문자 로 밑줄 을 포함 하지 않 습 니 다.  MyExcitingClassMyExcitingEnum .
모든 유형의 이름 - 클래스, 구조 체, 유형 정의 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_variablea_struct_data_membera_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_  자연 은 유형 내 사유 구성원 이다.

좋은 웹페이지 즐겨찾기