[UE5]코딩 표준
🎮코딩 표준
⚙️코딩 규칙이 중요한 이유
- 소프트웨어가 수명을 지속하는 동안 들어가는 비용 중 80%는 유지보수에 소모된다.
- 최초 작성자가 소프트웨어의 수명이 다할 때까지 관리하는일은 거의 없다.
- 코딩 규칙을 사용하면 가독성이 향상되어 엔지니어가 새로운 코드를 더 빠르고 완벽히 이해할 수 있다.
- 대다수의 코딩 규칙이 크로스 컴파일러 호환성에 필요하다.
⚙️클래스 체계
클래스는 작성자보다 읽는 사람을 염두에 두고 조직되어야 한다. 읽는 사람은 대부분 클래스의 퍼블릭 인터페이스를 사용할 것이므로, public을 먼저 선언한 후 클래스의 private 구현이 뒤따라야 한다.
⚙️저작권 고지
배포용으로 에픽에서 제공한 모든 소스파일은 파일 첫 번째 줄에 저작권 고지를 포함해야 한다.
1
// Copyright Epic Games, Inc. All Rights Reserved.
⚙️명명 규칙
- 모든 코드와 코멘트는 미국 영어의 철자법과 문법을 사용해야 한다.
- (타입 이름 또는 변수 이름) 각 단어의 첫 번째 글자는 대문자로 써야 하며, 일반적으로 단어 사이에 밑줄은 사용하지 않는다.
- 타입 이름에 추가적으로 대문자로 이루어진 접두사를 붙여 변수 이름과 구분합니다. 예를 들어 FSkin은 타입 이름이고, Skin은 FSkin의 인스턴스이다.
- 템플릿 클래스는 접두사 T를 포함한다.
- UObject에서 상속받는 클래스는 접두사 U를 포함한다.
- AActor에서 상속받는 클래스는 접두사 A를 포함한다.
- SWidget에서 상속받는 클래스는 접두사 S를 포함한다.
- 추상적인 인터페이스인 클래스에는 접두사 I를 포함한다.
- 열거형에는 접두사 E를 포함한다.
- 부울 변수는 접두사 b를 포함한다.
- 그 외 대부분의 클래스 접두사 F를 포함한다.
1
2
3
4
5
float Weight;
int32 Count;
bool bIsDead;
FString name;
UClass* MyClass;
⚙️포팅 가능한 C++ 코드
- bool: boolean 값(bool 크기 추정금지). BOOL은 컴파일되지 않는다.
- TCHAR: character(문자)(TCHAR 크기 추정금지)
- uint8: unsigned byte(1byte)
- int8: signed byte(1byte)
- uint16: unsigned short(2byte)
- int16: signed short(2byte)
- uint32: unsigned int(4byte)
- int32: signed int(4byte)
- uint64: unsigned quad word(8byte)
- int64: signed quad word(8byte)
- float: single precision floating point(4byte)
- double: double precision floating point(8byte)
- PTRINT: 포인터를 가질 수 있는 integer(PTRINT 크기 추정 금지)
⚙️코드 포맷
- 중괄호
에픽에서는 새 줄에 중괄호를 넣는 것을 권장한다. 단일 문장 블록에도 항상 중괄호를 포함시켜준다.
1
2
3
4
if(bIsDead)
{
return;
}
- If-Else
if-else 문의 각 실행 블록은 중괄호로 묶어야 한다. 중괄호를 사용하지 않을 경우 다른 사용자가 if 블록에 다른 줄을 추가할 수 있는 실수가 생길 수 있기 때문에 if-else 문은 항상 중괄호로 묶어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
if (Number < 10)
{
UE_LOG(LogCategory, Log, TEXT("Low"));
}
else if(10 < Number && Number < 50)
{
UE_LOG(LogCategory, Log, TEXT("Medium"));
}
else
{
UE_LOG(LogCategory, Log, TEXT("High"));
}
- 탭 및 들여쓰기
- 실행 블록별로 코드를 들여쓴다.
- 줄 시작 부분의 공백은 탭을 사용합니다. 탭 크기는 4자로 설정한다.
Leave a comment