Jeremy's Blog | Google C++ Style Guide - Naming (sungjk.github.io)
Google C++ Style Guide - Naming
구글 C++ 네이밍 가이드 번역입니다.
sungjk.github.io
여기서 보지 말고 저기 가서 보세용
구글 스타일 C++ 이름 규칙
전체 이름 규칙
일관적으로 이름을 지어야 한다. ******
이름들은 약어쓰지말기
보자마자 알 수 있는 이름쓰기
길이에 신경쓰기 보다는 이해를 돕고 혼동을 막아야함
int price_count_reader;//축약 없음
int num_errors; //누구나 이해 가능
int num_dns_connections; // dns도 누구나 이해 가능
int n; //의미가 없음
int nerr // 모호한 축약
int n_comp_conns; //모호한 축약
int wgc_connections; //팀 내부사람들만 아는 약어
int pc_reader; //pc는 다양한 의미가 있다
int cstmr_id; //중간단어를 지웠다
파일이름
파일이름은 모두 소문자여야하고 _나-를 (언더스코어나 대쉬)를 사용한다.
my-file.cc
all_my_fellas.cc
myusefulclass_test.cc // \_unittest와 \_regtest는 deprecate되었다 //////무슨뜻일까??? //구글 테스트 코드 파일을 말하는것 같다... GoogleTest User’s Guide | GoogleTest C++ GoogleTest 사용하여 유닛테스트 작성하기 (UnitTest) · ranlog (doll6777.github.io)
C++파일은 cc로 끝이나고 헤더는 h 로 끝난다.
db.h와 같이 /user/include중복되는 이름 쓰지 않기
이름 자세히 적기
예 , logs.h -> http_server_logs.h
인라인 함수
인라인 함수는 보통 .h 에 있어야 함.
하지만 길다면 -inl.h 로 따로 파일 생성
그러면 파일 3개됨. .h .cc -inl.h
타입
타입이름은 대문자로 시작하고 언더스코어 없이 단어마다 첫 글자로 대문자를 사용한다. 예를 들면 , MyExcitingClass, MyExcitingEnum.
클래스, 구조체, typedef, 열거형 같은 타입의 이름에는 같은 규칙이 적용된다. 다음 예시처럼 단어가 대문자로 시작되며 언더스코어를 사용하지 않는다.
// classes, structs
class UrlTable { ...
class UrlTableTest { ...
struct UrlTableProperties { ...
// typedefs
typedef hash_map<UrlTableProperties, string> PropertiesMap
///\*는 뭘까 정규식에 ID 이스케이프 아래 주소 달아놓음
// aliases
using PropertiesMap = hash_map<UrlTableProperties, string>;
// enums
enum UrlTableErrors { ...
변수 이름
소문자로 작성
공백은 언더스코어로하던가 없던가
string table_name; // 좋음 언더스코어
string tablename // 좋음 모두 소문자
string tableName // 나쁨 대문자 사용
클래스 데이터 멤버
데이터 멤버(인스턴스 변수 또는 멤버변수)
클래스 멤버변수는 이름 끝에 언더스코어를 추가해야함
예
string table_name_;
string tablename_;
구조체 변수
구조체 안에 있는 변수는 특별히 멤버이지만 언더스코어가 없음
전역 변수
전역변수는 제발 제한적으로 사용해야함
규칙은 없지만 g_처럼 접두어를 두어 구별이 쉽게하는게 좋음
상수 이름
k로 시작하는 대소문자가 섞인 이름을 사용
지역변수나 전역변수 상관없이 상수이면 이 규칙 사용
const int kDaysInAWeek = 7;
함수 이름
일반적인 함수들은 대소문자 사용
중간에 크래시 가능성이 있다고 예측되면 OrDie붙임
upper camelcase 와 Pascal case로 표현하는것같음
DeleteUrl()
AddTableEntry()
OpenFileOfDie()
접근자와 변경자는 해당 변수의 이름과 같은것을 사용
MyExcitingFunction()
MyExcitingMethod()
my_exciting_member_variable()
set_my_exciting_member_variable().