Game Develop

[UE5] const와 레퍼런스를 적극적으로 활용하자. 본문

UnrealEngine5/이것저것

[UE5] const와 레퍼런스를 적극적으로 활용하자.

MaxLevel 2024. 2. 17. 01:57

const는 결국 사람의 실수를 막기 위한 것이다.

없어도 동작은 당연히 한다. 말했다시피 당연히 실수를 방지하기 위함이다.

실수를 미리 방지할 수 있으면 개발시간도 단축될 수 있는 가능성이 있기 때문에 생산성에까지 영향을 끼친다 볼 수 있다.

미리 함수파라미터에 const로 해놓으면, 함수내부로직을 작성할 때 무의식적으로 해당 매개변수값을 변경하려 하면, 에러를 띄워주니 말이다.

만약 const로 안해놨으면 좀더 나중에서야 알아차리겠지. 

그래서 이펙티브 c++ 책이라던가 다른 개발자분들께서도 코딩스탠다드에 c++를 적극 사용하라는 말들이 있다.

 

레퍼런스는 불필요한 복사를 방지하기 위함이다. 게임개발을 하다보면 위치값이나 회전값같이 벡터값을 넘겨야하는 경우가 많은데, 그냥 초보자강의용이라던지 그런 영상 혹은 책같은데를 보면 레퍼런스를 사용하지않고 그냥 넘긴다.

미리미리 습관들이는게 좋으니 아래와 같이 하자.

 

 

 

매개변수중 FVector를 보면 const FVector&으로 데이터타입이 되어있는 것을 볼 수 있다. 원래는 그냥 FVector로 되어있었는데.. 미루다미루다 전체적으로 수정했다.

FVector를 해당함수에서 읽기전용으로 사용할것이니 const를 추가했고, 마찬가지로 함수내부에서 바꿀이유가 없으니 &로 복사를 하지않고 그냥 넘겨받는다.

 

사실 뭐 특별한건 아니고... c++ 프로그래밍의 기본적인 최적화라 생각한다.

실제로 엔진코드중 하나인 Actor의 SetLocation함수를 보면 저렇게 const와 &를 사용해서 FVector같은걸 넘겨받는다.