-
1차 시연회 정리쥬신게임아카데미/자기반성 2016. 3. 5. 21:44
WINAPI 시연회 준비간 잘못된 점.
1. 큰틀에서의 문제
게임상에서 각 역활에 대한 큰 틀에서의 분석이 매우 미흡..
마우스를 사용하는 게임 특성상 가운데 메인 UI에 각 상태를 나타내는 방식이 필요했고..
UI메니저를 만들어서 마우스가 각 객체를 선택했을때 필요한 정보(구조체)를 key메니져에서 받아 UI메니져에게 전달하는 식으로 생각했음..
덕분에 key메니저가 상당히 무거웠지만(당연할수 밖에 없음..)꽤 괜찮은 생각이였음..
하지만 문제는
* 큰틀 그 이상 그 이하 생각을 못했던 점..큰틀과 점점 더 작아지는 부분에 대해 생각이 매우 미흡..하나의 객체나 하나의 무언가 필요할때 그 연계성에 대한 생각이 매우 미흡했다..
문서화가 없었다는 점이 미칠듯한 망한 요인..반드시 어느정도의 문서화가 필요하다..머릿속에서만 생각이 있으면 안됨..
2. 공통적 문제
- 각 함수에 주석처리가 매우 미흡..주석처리가 미흡해서 반드시 그 함수의 쓰임을 반복적으로 확인하게 되고 그에 따른 시간낭비가 너무 많았음
(내가 만든 함수의 쓰임도 몰랐을뿐 아니라..끝까지 이미지 메니저랑 싸운거....)
(쓸때없이 중복되는 코드도 상당히 많았다..불필요한 변수 함수....등..)
반드시 주석은 해당코드가 어떻게 동작하는지를 중점으로 작성한다. 무엇을 인자로 어떻게해서 반환은?
또는 함수라면..인자가 어떤식으로 오는지 반환값이 무엇인지는 반드시 필요하다.
함수의 주석은 라인위에 적고.. 필요하면 클래스내 멤버변수에 대한 설명도 주석으로 옆에 적고 탭으로 맞추고..함수는 소스파일에서 대부분한다.
- 뭔가 동작이나 뭘 구현시 필기하려는 습관이 부족...머릿속으로 생각하는게 전부거나..일단 막 코딩으로 하는 습관...앞뒤 안보고 막하는짓...
( 덕분에 코드는 스파게티처럼 꼬였음..)
- 해당 객체에서 또는 클래스에서 생성된 동적할당에 관련된 new는 반드시 거기서 해결해줘야한다..다른 클래스에 넘어가서 해제하거나 그러면 안됨
(지난번 길찾기 관련 메모리릭 path 등이 그런이유...)
- 이중 포인터에 대한 개념이 흔들렸다. 포인터 변수를 함수의 인자값으로 포인터를 받으면 그건...일반 변수끼리의 복사와 같은것을.....
- 거의 막바지에 전역변수 남발.......
각 종 메니저 분석
1. 키메니저
* 키메니져에서 SetKeyState라는 함수(각 키의 눌림에 대한 반응을 리턴하게 되는 함수)에 모든 기능을 넣어둔게 잘못
- 드래그, 왼쪽, 오른쪽 클릭 관련...등 모든기능이 난잡하게 들어가 있음..(지금이라면 각 기능별 함수로 나눴을 것이다.)
2. 충돌메니저
* 중복된 함수가 굉장히 많음..기능은 거의 같은데 변수 한두개 정도..틀린?
3. 이미지 메니저
* 이미지 역활이 아닌데도 그냥 막포함..쓰임을 제대로 모름.. 충돌 메니저 단점과 같음..
그 외
1. UI부분에서 버튼 클래스가 어이없게 CObj를 상속받는데.........Ui를 상속받는게 아니라 ..일관성이 없음...그래서 구조가 엄청 꼬였음..
2. 벡터의 포인터 등 STL의 포인터를 넘길때 뭔가 문제 발생..신중에 신중을 해야함..어디서 객체가 하나만 공유를 하던가 ..이상한 현상..
특히 iter를 돌리거나 그럴때 문제가 발생했음..논리적이지 않은 문제..(마지막 태우가 잡아줬던 버그 관련..)
3. 마우스 등 키 호출을 아무곳에서나 남발한것..일관되게 한곳에서(키메니저)해야하나..그냥 일반함수에서 막 불러다(VK이렇게..) 사용한것..
4. 부분별한 enum 남발..STATE 남발...왜 prevState라고해서 이상하게 더 헷갈리게 만들었을까..후회중...
5. SAFE_DELETE 안씀..왜 안썼지..
6. GettickCount의 쓰임에 대한 이해 부족....