일반 이름 지정 규칙
이름에는 설명이 있어야함. 약어를 피하자
익숙하지않은 약어는 사용하지말고 친숙한 약어는 괜찮음.
int price_count_reader; // No abbreviation. int num_errors; // "num" is a widespread convention. int num_dns_connections; // Most people know what "DNS" stands for. int lstm_size; // "LSTM" is a common machine learning abbreviation.
int n; // Meaningless. int nerr; // Ambiguous abbreviation. int n_comp_conns; // Ambiguous abbreviation. int wgc_connections; // Only your group knows what this stands for. int pc_reader; // Lots of things can be abbreviated "pc". int cstmr_id; // Deletes internal letters. FooBarRequestInfo fbri; // Not even a word.
파일 이름
파일 이름은 모두 소문자여야하며 밑줄(_) 또는 대시(-)를 포함 할 수 있음.
my_useful_class.cc
my-useful-class.cc
myusefulclass.cc
myusefulclass_test.cc // _unittest and _regtest are deprecated.
파일 이름을 매우 구체적으로 지정하라.
logs.h 보다는 http_server_logs.h
타입 이름
타입 이름은 대문자로 시작하고 각각의 새 단어마다 대문자가 있어야 함
// classes and structs class UrlTable { ... class UrlTableTester { ... struct UrlTableProperties { ... // typedefs typedef hash_map<UrlTableProperties *, string> PropertiesMap; // using aliases using PropertiesMap = hash_map<UrlTableProperties *, string>; // enums enum UrlTableErrors { ...
변수 이름
변수 이름은 모두 소문자이며 단어 사이에 밑줄이 있음.
클래스의 데이터 멤버에는 추가로 밑줄이 있음.
string table_name; // OK - uses underscore. string tablename; // OK - all lowercase.
string tableName; // Bad - mixed case.
class TableInfo { ... private: string table_name_; // OK - underscore at end. string tablename_; // OK. static Pool<TableInfo>* pool_; // OK. };
struct UrlTableProperties { string name; int num_entries; static Pool<UrlTableProperties>* pool; };
상수
프로그램 기간동안 값이 고정된 변수는 k와 대소문자가 혼합된 이름이 지정.
const int kDaysInAWeek = 7; const int kAndroid8_0_0 = 24; // Android 8.0.0
함수 이름
정규 함수는 대소문자가 혼합되어 있음. 함수는 대문자로 시작하고 각각의 새 단어에 대문자를 사용
AddTableEntry() DeleteUrl() OpenFileOrDie()
네임스페이스 이름
네임스페이스 이름은 모두 소문자
열거자 이름
개별 열거자는 상수처럼 명명하거나 매크로처럼 이름을 지정하기도함.(올 대문자)
enum UrlTableErrors { kOK = 0, kErrorOutOfMemory, kErrorMalformedInput, }; enum AlternateUrlTableErrors { OK = 0, OUT_OF_MEMORY = 1, MALFORMED_INPUT = 2, };
매크로 이름
일반적으로 매크로 사용은 지양. 하지만 사용한다면 모든 대문자와 밑줄로
#define ROUND(x) ... #define PI_ROUNDED 3.0
이름 지정 규칙의 예외
기존 C 또는 C++ 엔티티와 유사한 이름을 지정하는 경우 기존 명명 체계를 따를 수 있음.
bigopen()
open()
uint
typedef
bigpos
struct
or class
, follows form of pos
sparse_hash_map
LONGLONG_MAX
INT_MAX
'프로그래밍 공부 > Coding convention' 카테고리의 다른 글
스타일 / 네이밍 / 주석 (0) | 2019.02.21 |
---|---|
Google C++ Style Guide - 서식 (Formatting) (0) | 2018.11.30 |