일반 이름 지정 규칙

이름에는 설명이 있어야함. 약어를 피하자

익숙하지않은 약어는 사용하지말고 친숙한 약어는 괜찮음.

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()
function name, follows form of open()
uint
typedef
bigpos
struct or class, follows form of pos
sparse_hash_map
STL-like entity; follows STL naming conventions
LONGLONG_MAX
a constant, as in INT_MAX


Posted by misty_
,