[ 개발 공부 ] 여러 가지 데이터 표기법, + Unity 표준 코딩 컨벤션

2024. 5. 12. 16:00게임 개발/개발 공부

개발을 하면서 당연한 것처럼 선생님에게 배웠던 private 변수명 앞에 _를 붙이는 방식을 사용하고 있었는데

내가 사용하고 있는 데이터 표기법이 무엇이었는지 몰라서 궁금하기도 하고 공부할 겸 쓰는 글이다.

 

Private 변수 선언할 때 _를 붙이는 이유

코딩 컨벤션으로 인한 이유 때문이다.

간단하게 얘기하자면 코드를 짜면서 이해를 쉽게 하기 위한 규칙이다.

 

예를 들어 저는 유니티에서 현재

메서드에는 파스칼 표기

private, protected 변수의 변수명 앞에는 _를 붙이고 카멜 표기 + 약어 사용 지양하기

public 변수는 파스칼 표기

메서드, 지역 변수에는 카멜 표기

클래스는 파스칼 표기

인터페이스에는 파스칼 표기, 앞글자에 I를 붙인다.

bool 타입 변수는 is, can, have(has) 등의 접두사를 사용한다.

 

이러한 코딩 방식으로 진행하고 있는데

이는 유니티 표준 네이밍 컨벤션이라고 한다.

사실 표준 콘밴션이라고 하기에는 팁 같은 느낌에 가깝다.
Unity를 사용한다고 해서 꼭 지켜야할 필요는 없다는 뜻, 다른 규칙을 사용해도 문제가 되지는 않는다.

 

[ 유니티 표준 네이밍 컨벤션 ]

https://unity.com/kr/how-to/naming-and-code-style-tips-c-scripting-unity

 

[ 컨벤션을 보면서 새로 배운 내용 ]

더보기

1. enum 형을 [Flags]를 사용해서 선언할 때에는 복수형으로 사용한다.

 

예:

// 기본 enum
public enum TestType
{
	Test1,
    Test2
}

// Flags로 사용시 복수형으로 나타낸다
public enum TestTypes
{
	Test1 = 0,
    Test2 = 1,
    Test3 = 2,
    Test4 = 4
}

 

2. 메서드 이름 지을 때 규칙

메서드는 작업을 수행하기 때문에 동사로 이름을 시작한다. Get, Set, Find, Do, 등등

bool을 반환하는 메서드는 질문을 해야한다. Is, Can, Has

 

3. 이벤트 이름 지을 때 규칙

옵저버 패턴 활용 시 자주 사용하는 event는 이름을 지을 때 동사구로 지정해야 한다.

문을 여는 이벤트는 OpeningDoor

문을 열린 후 이벤트에는 DoorOpened로 짓는다.

참고로 저는 event Action에다가 On을 붙이고 사용했습니다.

 

event Action을 호출하는 메서드는 On 접두사를 붙여 실행한다. 또는 (이벤트처리방법)_를 붙이는 방법도 있다.

예:

// 1번 방법
public void OnDoorOpend() => DoorOpend?.Invoke();
public void OnOpeningDoor() => OpeningDoor?.Invoke();

// 2번 방법
public void PlayerEvent_DoorOpend() => DoorOpend?.Invoke();
public void PlayerEvent_OpeningDoor() => OpeningDoor?.Invoke();

 

 


파스칼 표기법 ( PascalCase )

최근에 언리얼을 공부하면서 변수들에 자주 사용하고 있는 표기법이다.

 

단어의 첫 시작을 항상 대문자를 사용한다.

예시:

float MaxHP

float HealthPoint

bool IsDie

 


카멜 표기법 (camelCase)

소문자로 시작하고, 이어지는 단어들의 시작은 대문자로 작성한다.

단어 간 구분에 용이하다.

 

예시:

float maxHP

float healthPoint

bool isDie

 


스네이크 표기법 (snake_case)

단어와 단어 사이에 _를 붙여 구분하는 표기법이다.

Python에서 주로 사용한다.

 

예시:

float max_hp

float health_point

bool is_die


헝가리안 표기법 

데이터의 타입을 변수에 명시하는 방식이다.

 

예시:

float fMaxHP

float fHealthPoint

bool bIsDie

 

글로벌 변수인가에 따라 접두어를 붙인다.

g_ : 네임스페이스의 글로벌 변수인 경우

m_ : 클래스의 멤버 변수인 경우

s_ : 클래스의 static 변수인 경우

c_ : 함수의 static 변수인 경우