| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 드롭다운
- 크루스칼
- 최소신장트리 mst
- raycast
- Unity
- 깊이탐색
- 행동트리
- list clear
- 습관형성 #직장인자기계발 #오공완
- 유니티
- articulation body
- GetComponent
- Simulation
- dfs
- 오블완
- readonly
- 디지털트윈
- navisworks api
- sparkmain(clone) 무한생성
- sparkmain(clone)
- removeAll
- 트리구조
- 너비탐색
- unity sparkmain(clone)
- unity korea
- 최단거리 알고리즘
- 유니티 sparkmain(clone)
- 티스토리챌린지
- C#
- dropdown
- Today
- Total
낑깡의 게임 프로그래밍 도전기
31일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 본문

오늘도 점심을 챙겨먹고 강의를 듣기 시작했다.

짧은 강의였지만 코드를 치느라 시간이 좀 걸렸다.

오늘은 operator에 대해 배웠다. C++이건 C#이건 연산자는 늘 있었던 개념이라 익숙하다고 생각했었는데, 클래스를 대상으로 직접 정의할 수 있다는 사실은 새삼스럽게 느껴졌다. 클래스와 클래스가 마치 int나 float처럼 덧셈을 하고, 비교를 하고, 심지어 ++ 같은 연산도 적용될 수 있다니, 처음엔 약간 신기하기도 하고 복잡하다는 생각도 들었다. 그런데 막상 직접 operator를 정의해서 써보니 꽤 직관적인 면도 있고, 오히려 어떤 상황에서는 꼭 필요한 기능처럼 보이기도 했다.
예를 들어 두 벡터를 더한다거나, 복소수 계산을 한다거나, 어떤 객체 간의 비교 연산이 필요할 때, 매번 .Add() 나 .CompareTo() 같은 메서드를 호출하는 것보다 +, <, == 같은 연산자로 표현할 수 있다면 코드가 눈에 훨씬 잘 들어오는 것 같았다. 물론 내부에서는 멤버 함수나 static 함수를 오버로드해서 동작하게 만들어야 했지만, 그렇게 정의해 두면 자연스럽게 기존 연산자처럼 사용할 수 있어서 편리했다.
그 외 operator에 대해서 더 찾아본 결과 == 와 != 연산자를 오버로드할 땐 항상 Equals() 와 GetHashCode() 도 같이 재정의해주는 게 좋다고 했다. 그렇지 않으면 해시 기반 컬렉션에서 문제가 생긴다 했다. 처음엔 왜 그런지도 몰랐는데, 내부적으로 비교 연산과 해시 계산이 같이 맞물려서 돌아간다고 하더라. Dictionary 나 HashSet 같은 곳에서 예상치 못한 동작이 생길 수 있다고 해서 조심해야겠다 싶었다.
그리고 operator 오버로딩은 너무 남발하면 오히려 코드가 읽기 어려워진다 했다. 특히 의미가 모호한 연산을 억지로 오버로드하게 되면, 사용하는 사람 입장에서 어떤 동작을 기대해야 할지 애매해지기 쉽다고 했다. 그래서 연산자 오버로딩은 정말 그 연산이 직관적으로 필요한 상황에서만, 예를 들어 수학적 개념처럼 분명한 케이스에만 쓰는 게 좋다 했다.
오늘 배운 걸 정리하자면, 연산자도 결국 함수다. 다만 문법적으로 좀 더 깔끔하게 표현할 수 있도록 C#에서 제공하는 문법적 설탕일 뿐이다. 객체 간의 연산을 좀 더 자연스럽고 직관적으로 만들고 싶을 때 강력한 도구가 될 수 있다. 물론 그만큼 책임도 따르고, 잘못 썼을 때 오해를 부를 여지도 있으니 신중히 써야겠다. 아무튼 클래스를 연산자의 세계로 끌어들일 수 있다는 건 꽤 매력적인 개념이었다. 뭔가 객체가 진짜 살아있는 데이터처럼 느껴지는 순간이었다.

디지털 필기와 한컷!

오늘부로 11%가 되었고 46클립을 들었다.
내일도 파이팅!
'인강 후기' 카테고리의 다른 글
| 33일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 (6) | 2025.08.02 |
|---|---|
| 32일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 (3) | 2025.08.01 |
| 30일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 (4) | 2025.07.30 |
| 29일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 (9) | 2025.07.29 |
| 28일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 (4) | 2025.07.28 |