언리얼 코딩 표준
https://docs.unrealengine.com/5.3/ko/epic-cplusplus-coding-standard-for-unreal-engine/
코딩 표준
- 프로그래밍을 하는데 지켜야 하는 이름 규칙, 작성 방법 등을 지정한 가이드라인
- 코딩 스타일, 코딩 컨벤션이라고도 함
- 절대적으로 좋은 코딩 표준은 없음
- 가장 중요한 것은 프로젝트의 코딩 표준을 잘 따르는 것
언리얼 코딩 표준
- 클래스 체계
- public, private 순으로 작성
- 명명 규칙
- 파스칼 케이싱
- 합성어의 첫 글자를 대문자를 사용
- 언리얼에서는 파스칼만을 사용
- UnrealEngine
- 카멜 케이싱
- 첫 합성어는 소문자 나머지는 대문를 사용
- unrealEngine
- 스네이크 케이싱
- 합성어 사이에 언더바 사용
- 보통 C++에선 이 방식이 많음
- unreal_engine
- 템플릿 클래스는 접두사 T를 포함
- UObject 상속받는 클래스는 접두사 U
- AActor 상속받는 클래스는 접두사 A
- SWidget 상속받는 클래스는 접두사 S
- 추상 인터페이스 클래스는 접두사 I
- 열거형은 접두사 E
- 부울 변수 접두사 b
- 예외적으로 소문자
- 언리얼 상속이 아닌 일반적인 C++ 클래스나 구조체는 접두사 F
- 부울을 반환하는 모든 함수는 질의형으로 작성
- IsVisible(), ShouldClearBuffer()
- 단순 명사면 의도를 알기 힘듦
- 파라미터의 경우 In/Out을 통해 명시 권장
- 함수가 끝난 이후에 사용 Out
- 입력으로만 사용 In
- 둘다 InOut
- 글로벌적으로는 문제의 단어를 피해라
- 포터블 C++ 코드
- int의 경우에도 uint8, int32와 같이 명시
- 문자는 TCHAR
- int의 크기를 보장해주진 않지만 32비트 이상임은 보장
- C++ 표준 라이브러리 사용 X
- 표준 라이브러리가 안정적이고 완성도가 높기 전에 언리얼 자체에서 만들어뒀음
- 사용해도 되는데 무거워질 수 있음
- 언리얼의 지원이 더 필요없다면 표준 라이브러리로 갈 수도 있다는데 현재로선 희박한 듯
- Const 정확도
- const는 가능하면 최대한 사용해달라
- 예시는 문서에
- 최신 C++ 언어 문법
- 언리얼 엔진 빌드 시 요구되는 최소 언어 버전은 C++17
- override, final 강력히 권장
- nullptr 사용, NULL 금지
- auto 지양
- 람다, 반복자 등을 사용할 때는 auto 가능
- 범위 기반 for문 사용 추천
- 람다 함수 사용 가능
- 열거형은 enum class 권장
- std::move 대신 **MoveTemp 사용
- 언리얼은 생성자 구문에서 초기화하는 것이 좋음
- 초기화 구문 사용은 가능하긴 함
- 서드 파티 코드는 명시
- 중괄호는 새 줄에 중괄호를 작성
- if - else의 경우에도 항상 중괄호
- 탭은 4자로 스페이스
- switch 문
- 다음 케이스로 넘기는 것을 명시적으로
- break, return 등 꼭 달아주거나
- // falls through 코멘트 달아주기
- 물리적 종속성
- 파일은 접두사를 뺌
- 헤더에 #pragma once 필수
- include는 세밀하고 최대한 적게
- include 대신 전방선언이 가능하면 그렇게 함
- 캡슐화
- 족송성 문제
- 다른 클래스에 영향을 주지 않게
- 스트링 리터럴은 항상 TEXT()
- 타입을 쓰고 바로 오른쪽에 포인터나 레퍼런스 쓰고 한 칸 스페이스
- FInd In Files 활용에 중요