낑깡의 게임 프로그래밍 도전기

27일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 본문

인강 후기

27일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기

낑깡겜플밍 2025. 7. 27. 01:26
반응형

학습 시작 시간

오늘은 마침 12시가 지났길래 토요일 같은 일요일 밤늦게 강의를 들었다.

학습 종료 시간

제네릭 파트가 좀 어려워서 두번 듣느라 시간이 좀 걸렸다.

오늘 들었던 클립 시작과 종료

 C#에서 제네릭이라는 건, 데이터 형식을 미리 정해두지 않고 나중에 사용할 때 정할 수 있게 해주는 기능이다.
예전에는 ArrayList처럼 모든 걸 object로 다루다 보니 박싱/언박싱 때문에 성능도 떨어지고, 형 변환도 직접 해야 해서 실수하기 쉬웠다.

 제네릭이 생기면서 List<int>처럼 구체적인 형식을 지정할 수 있게 됐다. 덕분에 형변환 없이 값을 바로 꺼낼 수 있었고, 컴파일 시점에 타입이 결정되다 보니 안정성도 높아졌으며 성능도 더 좋아졌다.

 제네릭 메서드도 만들 수 있었다. T라는 타입을 써서 어떤 자료형이 들어오든 동작하게 만들 수 있었고, 다양한 타입에 대해 중복 없는 코드 작성이 가능해졌다.

제네릭은 설명이 길지않고 짧지만 뭐가 그리 이해가 안되는지 그래서 제네릭에 대해서 좀더 찾아봤다.

 제네릭을 사용하면 얻는 장점이 많았다. 가장 큰 장점은 타입 안정성과 코드 재사용성이었다. 형변환 없이 데이터를 꺼낼 수 있으니 실수할 여지가 적고, 컴파일러가 타입을 보장해주기 때문에 런타임 오류도 줄일 수 있었다. 특정 타입을 위한 메서드를 따로 만들 필요 없이 제네릭 하나로 여러 타입을 처리할 수 있어서 유지보수도 쉬워지고, 중복 코드도 줄었다. 또한, object로 처리하던 방식에 비해 성능도 향상되었다. 특히 값 타입을 다룰 때 박싱/언박싱이 제거되면서 메모리와 처리 속도 측면에서 더 유리했다.

 다만 단점도 있었다. 처음엔 문법이 낯설 수 있었다. 이것이ㅣ 지금 내가 겪고 있는 문제인 것 같다. <T>라든지 where T : SomeBase 같은 구문은 익숙하지 않으면 오히려 복잡하게 느껴졌고, 제네릭 타입이 여러 개 중첩되기라도 하면 디버깅할 때 한눈에 파악하기 어려운 경우도 있었다. 게다가 컴파일 타임에는 안전해 보여도, 내부에서 as T 같은 캐스팅을 할 경우 런타임에서 null이 나오는 상황도 생길 수 있었다.

 그럼에도 불구하고, 실무에서는 제네릭이 주는 이점이 훨씬 크다고 생각한다. 형변환 없이 안전하게 다양한 타입을 다룰 수 있고, 코드도 훨씬 유연하게 만들 수 있다고 한다.

학습 인증샷

오늘도 디지털 필기와 함께!

오늘의 완강률

오늘부로 10%! 42클립을 들었다.

내일도 파이팅!

반응형