본문 바로가기
C++

[C++] C++ 명명규칙 : 우아하게 프로그래밍하는 방법

by 유노brain 2023. 10. 23.
반응형

팀별 프로젝트나 회사에서 어떠한 코딩을 진행할 때 서로가 편히 알아볼 수 있게 만들어 놓은 규칙이 있습니다.

이것을 명명규칙(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;
반응형

댓글