팀별 프로젝트나 회사에서 어떠한 코딩을 진행할 때 서로가 편히 알아볼 수 있게 만들어 놓은 규칙이 있습니다.
이것을 명명규칙(Naming Convention)이라고 합니다.
만약 이러한 명명규칙이 없을 경우 코드의 변수이름, 주석 등 사람들마다 각자 개성을 가지고 작성할 경우 다른 사람이 코드를 볼 때 시간이 많이 걸리고 못 알아먹는 상황이 나오게 됩니다.
그렇기 때문에 명명규칙에 대해 알아둘 필요가 있습니다.
명명규칙은 일반적일 때, 주석을 달을 때, 변수를 생성할 때 등 여러 가지에 대해 규칙을 가집니다.
아래에서는 일반적인 것부터 함수선언까지 나타내겠습니다.
1. General : 의미있는 이름을 작성해라
변수의 이름을 생성할 때는 의미있는 이름으로 작성해야 합니다.
만약 아래와 같이 변수 이름을 생성한다면
이 변수가 어떤 것을 의미하는지 작성자만 알게 됩니다.
Bad
std::string x = "yun";
int y = 23;
std::string z = "Seoul";
즉 그렇기 때문에 변수이름을 작성할 때에는 의미있는 이름으로 작성해야 합니다.
Good
std::string name = "yun";
int age = 23;
std::string city = "Seoul";
2. General : 축약문을 사용하지 마라
자신만이 아는 축약문을 사용하면 안됩니다.
요즘 MZ의 축약 표현을 기성세대들이 잘 알지 못하는 것처럼 만약 자신만 아는 축약문을 사용할 경우
다른 팀원과의 소통에 있어서 애로사항을 줍니다.
Bad
std::string cs = "computer science";
int nos = 23;
int noc = 12;
사회적으로 통용되는 축약문의 경우 사용해도 됩니다.
Good
std::string computer_subject = "computer science";
int number_of_students = 23;
int number_of_class = 12;
std::string univ = "CNU";
3. File : 구체적이고 일관적이게 작성하라
파일의 이름을 작성할때는 구체적이고 일관적으로 작성해야 합니다.
구체적이지않고 일관적이지 않다면 이 파일이 어떤 파일인지 모를 뿐만 아니라 두 파일이 같은 종류의 파일인지 아니면 다른 부분으로 묶여야하는 파일인지 헷갈릴 수 있습니다.
Bad
logs.cc
http-header.h
http_body.cc
그렇기 때문에 구체적이고 일관적이게 작성해야합니다.
Good
http_logs.cc
http_header.h
http_body.cc
4. Type : Pascal 표기법을 사용해라
Pascal 표기법이란 단어의 앞글자를 대문자로 만드는것을 뜻합니다.
타입을 지정할 때는 Pascal 표기법을 사용합니다.
예를 들어 enum타입의 testresult의 경우 testresult가 아닌
TestResult로 작성해주셔야합니다.
Bad
class static_analysis{...};
struct dynamicanalysis {...};
enum testresult
Good
class StaticAnalysis{...};
struct DynamicAnalysis {...};
enum TestResult
5. Var : snake 표기법을 사용해라
컴퓨터 프로그래밍을 하시는 분이라면 snake 표기법을 많이 들어보셨을 겁니다.
많은 사람들이 사용하고 계시는 "_"을 뜻합니다.
즉 int NumberOfClass의 경우 int number_of_class로 작성해주셔야합니다.
Bad
std::string TableName = "toyu";
int NumberStudent = 20;
Good
std::string table_name = "toyu";
int number_student = 20;
6. Class member : 꼬리에 밑줄그어라
클래스 멤버의 경우에는 변수 뒤에 "_"표시를 추가적으로 더 붙여야합니다.
Bad
class Car{
int car_speed;
};
Good
class Car{
int car_speed_;
};
7. Struct member : 변수와 같이 이름을 설정해라
구조체 멤버의 경우 변수에서 설정한 이름과 같은 방법으로 정의해야합니다.
Bad
struct Foo{
int number_field_;
};
Good
struct Foo{
int number_field;
};
8. Constant : k를 앞에 고정하고 camel을 사용해라
상수를 정의하기위해서는 변수이름 앞에다가 'k'를 넣습니다.
추가적으로 상수의 변수는 camel을 사용해서 정의합니다.
Bad
const int number_of_class;
const int VersionOfSystem;
Good
const int kNumberOfClass;
const int kVersionOfSystem;
9. Regular function : Pascal 표기법을 사용해라
함수를 정의하는데에 있어서 파스칼 표기법을 사용합니다.
Bad
class Foo{
int add_two_number();
};
Good
class Foo{
int AddTwoNumber();
};
10. Accessor function : 필드 이름을 사용해라
C++은 자바와 다르게 접근함수를 가져오는데 있어서 필드 이름을 그대로 사용합니다.
자바의 경우 getElement(), setElement()를 사용하지만 C++에서는 Element(), set_result(int Element)를 사용합니다.
Bad
class Foo{
int element_;
int GetElement();
int SetElement();
};
Good
class Foo{
int element_;
int element();
int seet_element(int element_);
};
주석(Comment) 명명규칙
1. General : 일관되게 사용해라
주석을 사용할때는 어디는 "//"을 사용하고 다른 데는 "/*" 사용하면 안됩니다.
만약 "//"로 했다면 모든 주석을 작성할때는 "//"으로 작성해야합니다.
Bad
class Foo{
// int element_;
/*int element();*/
int seet_element(int element_);
};
Good
class Foo{
// int element_;
//int element();//
int seet_element(int element_);
};
또는
class Foo{
/* int element_;*/
/*int element();*/
int seet_element(int element_);
};
2. Class : What and How
클래스에 주석을 작성할때는 이 클래스가 무엇이고 어떻게 작동하는지에 대해 알려줘야 합니다.
Good
// Calculate arithmetic operations among integer values.
// Example:
// IntCallculator int_calculator;
// int result = int_calculator.Add(3,10);
class IntCalculator{
};
3. Function : 구체적으로 설명해라
함수를 설명할때는 구체적으로 작성해줘야 합니다.
Good
// Divide the dividend by the divisor and return the result.
// The divisor must not be 0
int Divide(int dividend, int divisor);
4. Variable : 변수가 뭘 설명하는지 모를때 작성해라
변수를 선언하더라도 남들이 보기에 이것이 어떤 변수인지를 모를 때가 있습니다.
그럴때는 변수 아래에다가 주석으로 설명해줍니다.
Good
// The limit of total calculation numbers that prohibits..
int kCalculationLimit = 10;
댓글