본문 바로가기

프로그래밍/Unreal

[Unreal] 클래스의 Prefix를 F로 사용하는 이유.

Unreal trivia: What does the 'F' prefix on classes and structs stand for? - Programming & Scripting / C++ - Unreal Engine Forums

 

Unreal trivia: What does the 'F' prefix on classes and structs stand for?

This gets asked all the time and I thought I would share the official story, as I remember wondering the same thing. ‘U’ stands for UObject, ‘A’ stands for actor, ‘T’ stands for Template. Everyone gets that. But what does ‘F’ stand for? It

forums.unrealengine.com

 

 언리얼 코딩 스탠다드를 보면 항상 이해가 안되는 부분이 있었는데, 타입의 프리픽스를 소개하는 부분이다.

 UObject를 상속받은 오브젝트는 U를, AActor를 상속받은 클래스는 A를, Slate는 S, 템플릿 클래스는 T를 접두어로 사용한다.

 그런데 그렇지 않은 C++의 순수 클래스의 접두어 F는 도저히 어떤 연유에서 사용하는 건지 알수가 없었다. 언리얼의 설명은 "로컬 변수든 파라메터 변수든 대문자로 시작할 것이기 때문에, 타입과 변수의 이름이 겹치지 않도록 타입 앞에는 F를 붙여주세요"였다.

 

 이에 대해서 아는 형이 이유를 알려주었는데, 꽤 재밌는 이야기라 짧게 글을 쓴다.

 접두어 F는 원래 순수 클래스를 의미하려고 사용하였던 것이 아니라, 언리얼1 시절 팀 스위니가 실수 벡터 클래스인 FloatVector를 Integer, Double Vector와 구분하기 위해서 붙였던 것이라고 한다.

 이를 본 다른 엔지니어들이 F를 이곳저곳에 사용하기 시작하면서 F를 접두어로 붙인 클래스가 많아졌고 결국 순수 클래스 접두어로 F가 정착되었다고 한다.

 

 정말 그럴까? 싶다가도 충분히 그럴수도 있겠다는 생각 또한 든다.