https://docs.unrealengine.com/4.27/ko/ProductionPipelines/DevelopmentSetup/CodingStandard/
언리얼 엔진4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙들.
코딩 표준
언리얼 엔진 4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙입니다.
docs.unrealengine.com
자세한 내용은 위의 docs를 참고하자.
1. 클래스 체계
클래스 체계는 작성자보단 읽는 사람을 기준으로 체계를 잡아야 한다. 읽는 사람 대부분은 클래스의 공용 인터페이스를 쓸 것이기에, public을 먼저 선언하고, private을 나중에 구현한다.
2. 작명규칙
- 변수이름, 유형 이름 등의 이름 내 각 단어의 첫 글자는 “대문자”로 써야 하며, 단어 사이에 공백을 띄우지 않습니다.
- 변수 이름과 구분하기 위해 유형 이름을 대문자 한글자로 나타내는 접두사를 붙입니다. 예를 들면 FSkin이 유형 이름이고, Skin은 FSkin의 인스턴스 입니다.
<언리얼에서 정한 접두사>
T : 템플릿 클래스
U : UObject에서 상속하는 클래스 접두사.
A : AActor에서 상속하는 클래스 접두사.
S : SWidget에서 상속하는 클래스 접두사.
I : 추상 인터페이스
E : Enum(열거형)
b : Boolean 변수의 접두사.
F : 언리얼 오브젝트와 관련이 없는 대부분의 클래스 접두사.
3. Const 지시자
- 함수 인수가 함수 내에서 수정되지 않는 경우 인수를 const포인터 또는 참조전달한다.
- 메서드가 오브젝트를 수정하지 않아 const플래그를 붙인다.
- 루프에서 컨테이너 자체에 대한 수정을 하지 않아 const를 사용하여 컨테이너에 반복처리를 하는 경우.
void SomeMutatingOperation(FThing& OutResult, const TArray<Int32>& InArray)
{
// InArray 는 SomeMutatingOperation 에 의해 수정되지 않지만, OutResult 는 수정될 수도 있습니다.
}
void FThing::SomeNonMutatingOperation() const
{
// 이 코드는 자신을 부른 FThing 을 수정하지 않습니다.
}
TArray<FString> StringArray;
for (const FString& : StringArray)
{
// 이 루프의 바디는 StringArray 를 수정하지 않습니다.
}
Const는 값 전달 함수 파라미터와 로컬에 쓰기에도 좋다. 그러면 변수가 함수 바디에서 수정되지 않을 것이라고 알려주므로 가독성 향상에 도움이 된다.
4. auto 키워드
아래 몇가지 예외를 제외하고 가독성을 위해 auto는 가급적 사용하지 말자.
- 변수에 람다를 바인딩해야 하는 경우, 람다 유형은 코드에 표현 가능하지 않기 때문.
- 이터레이터 변수의 경우, 유형이 매우 장황하여 가독성에 악 영향을 끼칠 수 있기 때문.
- 템플릿 코드에서, 표현식의 유형을 쉽게 식별할 수 없는 경우.
5. 중괄호
에픽에서는 새 줄에 중괄호를 넣는 것이 오래된 관행처럼 이어져 오고 있으니, 준수해야 한다. 단일 문장 블록도 항상 중괄호를 포함시켜라.
if (bThing)
{
return;
}
'UE4' 카테고리의 다른 글
[UE4] 버전업 이후 달라진 것들 (0) | 2022.09.26 |
---|---|
[UE4] PlayerController (0) | 2022.09.26 |
[UE4] GameMode (0) | 2022.09.26 |
[UE4] 언리얼의 이벤트 함수 (2) | 2022.09.26 |
[이득우 책] CHAPTER 12 오류발견 (0) | 2022.08.24 |