Unreal과 C++를 사용해서 본격적으로 게임을 만들기에 앞서 팀원들과 더 편하게 소통하기 위해서 변수명을 통일 하는 시간을 가졌었는데 문득 별 생각없이 대충 짖고 프로그레밍을 하다가 팀원들고 협업을 좀더 원활히 하려면 사소하지만 중요하다는 생각이들어서 어떻게 작성하는게 효율적이고 왜 그래야하는지 에 대해서 찾아보고 글을 적어봤습니다.
변수명 작성의 기본 원칙
-
- 의미가 명확한 이름 사용!
변수명이 해당 데이터의 역할을 명확히 설명을해야 합니다.
Ex) hp보다는 currentHealth가 다른 사람이 보기에 더 직관적인걸 알 수 있습니다.
-
- 줄임말 지양
curHp 대신 currentHealth 사용
spd 대신 speed 사용
-
- 접두어(Prefix)활용
Unreal Engine에서는 변수명 앞에 타입을 붙이는 것이 일반적입니다.
b (bool) → bIsJumping
i (int) → iScore
f (float) → fSpeed
v (FVector) → vPlayerLocation
s (FString) → sPlayerName
프로그래밍 표기법 활용
프로그래밍에서 표기법은 코드의 가독성과 유지보수를 높이기 위해 변수, 함수, 클래스 등을 작성할 때 사용하는 일관된 규칙 입니다.
표기법은 언어와 프레임워크에 따라 다를 수 있으며, 일반적으로는 카멜 케이스,스네이크 케이스, 파스칼 케이스 등이 사용이됩니다.
대표적은 표기법 종류
- 카멜 케이스 (Camel Case)
단어를 이어 쓸 때 첫 단어는 소문자로 시작하고, 이후 단어들은 첫 글자를 대문자로 작성
예제: myVariableName, playerHealth, getPlayerScore()
사용 언어: Java, JavaScript, TypeScript, C++, Swift 등
사용 예시:
로컬 변수, 함수명: calculateDamage(), updatePosition()
클래스 멤버 변수: playerScore, maxSpeed
- 파스칼 케이스 (Pascal Cass)
모든 단어의 첫 글자를 대문자로 작성
예제: MyClassName, PlayerHealth, GetPlayerScore()
사용 언어: C#, Java, Pascal, TypeScript, Unreal Engine (클래스 이름)
사용 예시:
클래스명: CharacterController, GameManager
함수명 (C# 등에서 주로 사용): CalculateDamage(), UpdatePosition()
- 스네이크 케이스 (Snake Cass)
단어 사이를 _(언더스코어)로 구분하고 모두 소문자로 작성
예제: my_variable_name, player_health, get_player_score()
사용 언어: Python, C, Ruby
사용 예시:
Python 변수명: player_score = 100, enemy_count = 5
C 언어 변수명: int max_speed = 10;
- 헝가리 표기법 (Hungarian Notation)
변수명 앞에 데이터 타입을 명시
예제: iHealth (int형 변수), bIsDead (bool형 변수), fSpeed (float형 변수)
사용 언어: C++, Unreal Engine
사용 예시:
int iHealth = 100;
float fGravity = 9.81f;
bool bIsRunning = false;
FVector vPlayerPosition;
- 케밥 케이스 (Kebab Case, Dash Case)
단어를 -(하이픈)으로 구분
예제: my-variable-name, player-health, get-player-score
사용 언어: URL, CSS, HTML
사용 예시:
CSS 클래스명: .button-primary, .menu-item
URL 경로: https://example.com/user-profile
표기법 선택 시 고려할 점
-
일관성 유지
→ 하나의 프로젝트에서는 반드시 일관된 표기법을 유지해야 합니다.
-
팀 스타일 가이드 준수
→ 회사나 오픈소스 프로젝트의 스타일 가이드를 따르는 것이 중요
-
가독성 우선
→ 줄임말을 피하고, 명확한 의미의 변수명을 사용
Unreal Engine에서의 변수명 스타일
Unreal Engine에서는 에픽 게임즈의 코딩 표준을 따르는 것이 좋습니다.
- 클래스 멤버 변수(멤버 변수에는 m_ 을 붙이기도 함)
class AMyCharacter : public ACharacter
{
private:
int32 Health; // 로컬 변수 (일반적인 변수)
int32 mMaxHealth; // 멤버 변수 (m 사용)
bool bIsDead; // 불리언 변수는 b로 시작
float fSpeed; // float 변수는 f로 시작
};
int32 g_TotalPlayers = 0;
float g_GlobalGravity = 9.8f;
static int32 s_GameDifficulty = 1;
void TakeDamage(int32 DamageAmount, float DamageMultiplier);
결론
변수명은 명확하고 일관성 있는 스타일로 작성해야 유지보수가 편리합니다. 특히 Unreal Engine에서는 헝가리 표기법을 활용하여 타입을 구별하는 것이 일반적입니다. Epic Games의 코딩 표준을 따르면 협업 시에도 유리하므로, 위의 원칙을 참고하여 변수를 네이밍하면 좋습니다!
마치며
혼자 작업을 할 때에는 처음에 별생각없이 타자치기 좋게 아무생각없이 줄여서 사용해야겠다 라고 생각했었는데 이제는 다른 사람들과 협업을 해야하니깐 이런거 하나하나가 소통하는데 있어서 중요하다고 생각이 들어서 공부를 해봤는데요 앞으로는
내가 작업한 코드를 다른 누가봐도 사용한 변수명만 보고 바로 무슨 생각으로 사용했구나 라는걸 이해시켜주기 위해서 지금부터라도 올바른 변수명 사용 습관을 길드려야겠다 생각했습니다.