UE4

[UE4] 언리얼 코딩 표준

Honey Badger 2022. 9. 26. 20:06

https://docs.unrealengine.com/4.27/ko/ProductionPipelines/DevelopmentSetup/CodingStandard/

언리얼 엔진4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙들.

 

코딩 표준

언리얼 엔진 4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙입니다.

docs.unrealengine.com

자세한 내용은 위의 docs를 참고하자.

 

1. 클래스 체계 

  클래스 체계는 작성자보단 읽는 사람을 기준으로 체계를 잡아야 한다. 읽는 사람 대부분은 클래스의 공용 인터페이스를 쓸 것이기에, public을 먼저 선언하고, private을 나중에 구현한다.

 

2. 작명규칙

 - 변수이름, 유형 이름 등의 이름 내 각 단어의 첫 글자는 대문자로 써야 하며, 단어 사이에 공백을 띄우지 않습니다.

- 변수 이름과 구분하기 위해 유형 이름을 대문자 한글자로 나타내는 접두사를 붙입니다. 예를 들면 FSkin이 유형 이름이고, SkinFSkin의 인스턴스 입니다.

 

<언리얼에서 정한 접두사>

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