평소에도 나름 머릿속에 규칙을 만들어서 변수명을 사용 하였는데,
코드를 짜다보니까 점점 이 규칙이 복잡해 지는듯 싶어 포스팅에 정리한다.
해당 포스팅은 지속적으로 수정될 예정이다.
1. 헝가리안 표기법 지양
현대 IDE 는 기능이 출중해서 헝가리안 표기법을 앵간해선 사용하지 않아도 된다.
특별히 강조해야 할 경우에만 제한적으로 사용.
※ IDE가 없어도 왠만한 환경에서 VSCode 사용이 가능하다. IDE를 대체할 수단이 넘쳐나므로 헝가리안은 지양한다.
2. 카멜표기법 지향
Namespace, Method, Variable, Enum 에 모두 카멜 표기법을 사용한다.
단 Namespace 를 만들때는 카멜표기법으로 분류할만큼의 복잡한 네이밍을 사용하지 않는것이 좋다.
필요하다면 다중 Namespace 를 사용해야 한다.
// 별로인 예제
namespace blackCow
{
}
3. 파스칼 표기법 지향.
Class, Interface 에 파스칼 표기법을 사용한다.
4. 팟홀 표기법을 사용한다.
대다수의 근본은 카멜, 파스칼 표기법을 따르되, 그 성질을 명시해야 될 때 제한적으로 팟홀 표기법을 이용한다.
enum icdType_send
enum icdType_receive
위의 경우 method 라면 sendIcdType, receiveIcdType 라고 적용하면 되겠지만,
enum 은 능동형으로 이름짓기에는 애매한 감이 있다.
'이건 send 용으로 사용되는 icdType 이야~' 라고 강조하기 위해 팟홀 표기법을 이용하여 기재한다.
전치사 'for' 의 느낌으로 사용하면 된다.
5. 동사가 앞에 위치하는 표기법을 지향
ex) receiveServer
ex) sendServerToClient
6. 상수는 대문자
상수는 대문자로 기재하며, 단어간 구분에 있어서는 팟홀 표기법을 사용한다.
SOCKET _listenSocket = INVALID_SOCKET;
7. 클래스 내부 변수는 _ 를 접두로
기본적으로 접미가 붙지 않은 변수는 코드블럭을 떠나면 메모리가 해제되는것으로 인식하면 됨.
class Tcp
{
private:
WSADATA _wsaData;
SOCKET _listenSocket = INVALID_SOCKET;
SOCKET _serverSocket = INVALID_SOCKET;
SOCKET _clientSocket = INVALID_SOCKET;
public:
※ 데이터셋으로 쓰이는 클래스 (singleTon, static) 의 경우에는
데이터양이 많을 경우 적절히 생략 가능. (혹은 클래스 인스턴스만)
8. 줄임말 지양
줄임말을 지양하는 방향으로 설계한다.
하지만 줄임말의 뜻이 관용적으로 사용되어 왔으며, 객관적으로 인식하기 쉬운 경우엔 사용해도 된다.
// OK
class Tcp
{
// 아래와 같이 단지 4개의 구문만 사용하는건 줄임말을 사용하는것이 오히려 더 깔끔하다.
std::string srcIp;
unsigned int srcPort;
std::string recvIp;
unsigned int recvPort;
}
class Tcp
{
// 물론 이렇게 쓰는게 잘못된건 아니다.
std::string sourceIp;
unsigned int sourcePort;
std::string receiveIp;
unsigned int receivePort;
}
말은 '객관적' 이라고 하였으나, 이 '객관' 은 누군가에겐 주관이 될 수 있으므로 신중히 판단하여 사용해야 한다.
만약 줄임말 쓴 코드가 '논란이 되면' 대부분의 경우 코드 작성자가 잘못한거다.
'Programming' 카테고리의 다른 글
COM 개체와 Thread 안정성 (0) | 2023.04.30 |
---|---|
Endian 변환 과정에 대하여 (0) | 2021.10.28 |