Unreal Engine 5.3 Documentation > 코딩 표준 을 참고하여 C++를 익히고 있다는 가정하에 중요한 것만 작성되었습니다.
기본적인 코딩 규칙
public에서 private로 이어지는 클래스 체계(Organization)을 준수
: 제일 많이 보는 public을 윗쪽에 private를 아래쪽에 작성하자
언리얼 변수의 명명 규칙
●파스칼 케이싱(Pascal Casing) : 합성어의 첫 글자를 대문자를 사용해 명명
● 모든 클래스와 구조체에는 고유한 접두사들이 있다.
- 템플릿 클래스에는 접두사 T를 포함합니다.
- UObject에서 상속받는 클래스에는 접두사 U를 포함합니다.
- 모든 오브젝트는 UObject를 상속한다.
- AActor에서 상속받는 클래스에는 접두사 A를 포함합니다.
- UObject를 상속받았지만, 이후의 자식들은 A를 접두어로 사용한다.
- SWidget에서 상속받는 클래스에는 접두사 S를 포함합니다.
- Slate (슬레이트)는 언리얼의 커스텀 UI 프로그래밍 프레임워크 이름입니다.
- 추상적 인터페이스인 클래스에는 접두사 I를 포함합니다.
- 에픽의 개념이 유사한 클래스 타입( TModels 타입 특성에 첫 번째 아규먼트로 사용)에는 접두사 C를 포함합니다.
- 열거형에는 접두사 E를 포함합니다.
- 부울 변수는 접두사 b를 포함합니다(예: bPendingDestruction 또는 bHasFadedIn ).
- 그 외 대부분의 클래스는 접두사 F를 포함합니다. 그러나 일부 서브시스템은 다른 글자를 사용하기도 합니다.
- 부울 값을 반환하는 모든 함수는 true/false 질의문으로 만듭니다. (예: IsVisible() 또는 ShouldClearBuffer() )
● 언리얼에 있는 특별한 변수들
- TCHAR - character(TCHAR 크기 추정 금지)
- int32 - signed int(4 바이트)
- uint64 - unsigned "quad word"(8 바이트)
코드의 명확성
● 필수는 아니지만, 파라미터에 가급적 In과 Out 접두사를 사용해 명시
: 함수 내에서 변수의 값을 참조를 통해 바꾼다면 Out을 붙여서 알아볼 수 있게 하자
void PlusTen(int32* OutInt){
*OutInt += 10;
return;
}
● const , override, final, nullptr의 적극적인 활용
: 위의 단어들은 코드 가독성을 올려준다.
● 열거형에 enum class 사용
● 레퍼런스를 통한 복사 방지
: STL move를 쓰지 말고 언리얼 함수인 MoveTemp를 사용해라
● auto 키워드 이터레이터나 람다가 아닌 이상 가급적 자제하자.
● 생성자 해더에다가 초기화하는것이 편하지만, Uobject는 생성자 구문에서 초기화하는 것이 좋습니다.
● Find In Files의 활용 (포인터, 레퍼런스)
:포인터와 레퍼런스의 스페이스는 그 오른쪽에 딱 한 칸만 둬야 합니다. 그래야 특정 유형에 대한 모든 포인터나 레퍼런스를 빠르게 Find in Files 할 수 있습니다.
FShaderType* Ptr
// 원하는 타입을 검색할때 포인터를 자료형에 붙여야 애로사항이 없다.
● 헤더 파일 및 #include 구문은 의존성을 최소화시켜 주의 깊게 다룰 것
: 전방 선언(FORWARD DECLARATION)을 통해서 CPP파일에서 컴파일하는 것이 바람직하다.
● 헤더에 특수한 스태틱 변수를 정의하지 않도록 합니다. 해당 헤더가 포함된 모든 이동 단위로 인스턴스가 컴파일되기 때문입니다.
// SomeModule.h
static const FString GUsefulNamedString = TEXT("String");
이러한 코드는 다음으로 대체해야 함
// SomeModule.h
extern SOMEMODULE_API const FString GUsefulNamedString;
// SomeModule.cpp
const FString GUsefulNamedString = TEXT("String");
'Unreal 공부' 카테고리의 다른 글
[UE] C++ for Blueprinters (0) | 2023.11.27 |
---|---|
언리얼 C++ 기본 타입과 문자열 (1) | 2023.11.03 |
[Unreal] 오버랩 이벤트, 히트 이벤트 (1) | 2023.10.05 |
[Unreal] C++ 파일이 먹통이 됬을때 (and UE 인텔리센스 Fix 펌) (1) | 2023.10.03 |
[Unreal] 1-1. BluePrint (0) | 2023.08.04 |