(수)2024.10.02 자 끄적끄적....
팀 프로젝트 진행 마무리의 공식적인 마지막 날이다.(내일은 쉬는 날이라서...)
드디어 오늘 팀원 분들이 만드시는 몬스터 객체와 플레이어 객체의 클래스가 어느정도 작성이 마무리가 되어서, 나의 배틀Scene을 빌드해서 테스트해볼 수 있었다.
배틀 클래스를 만들면서 다른 객체들의 데이터를 사용해야 될 상황이 꽤 많았는데, 의존성을 떨어뜨리고 객체를 은닉하기 위해 다른 객체에서 메서드를 만들어 기능을 구현하는 방식으로 배틀 클래스를 구현하였다. 이 과정에서 필요한 메서드들을 몬스터 객체와 플레이어 객체를 만드시는 분들께 로직을 만들어서 요청하였고, 이 부분들을 만들어 주셨다.
아무튼, 요청한 부분을 상정하여 빨간줄이 잔뜩 뜨더라도 만들어질 기능들을 미리 이용하여 작성하였다.
아무튼! 이렇게 Dev브런치에 올린 팀원 분들의 코드를 내 브런치로 머지해서 확인해보니, 다음과 같은 오류가 생겼다.
전역 변수로 사용하려고 Program.cs의 Program 클래스에 만들어 놓은 Player player객체가 있었는데, Battle 클래스에서 사용하려고 하니, player.메서드() 가 아니라 Program.player.메서드() 이런 방식으로 사용해야 했다.
PrintCharacterInfo()라는 몬스터와 플레이어의 정보를 출력해주는 메서드의 작성을 요청했었는데 오타가 있었다.(몬스터와 플레이어는 Character라는 클래스를 상속받는다. 저 메서드는 Charactor의 메서드)
그런데, 이게 하필 매개변수에 따라 오버로딩까지 되게 요청했던 메서드였는지라, 메서드를 두 개를 선언해야 했다.
그래서 어떤 PrintCharacterInfo는 잘되고, 어떤 PrintCharacterInfo는 빨간줄이 뜨는 현상이 생겼다.
그래서 내가 오버로딩을 잘못했나? 오버로딩과 오버라이딩을 같이 쓰면 안되나? 등등의 생각이 들며 너무 어지럽고 머리가 복잡하여 튜터님께 가서 해결하였다. (이건 어제자 해결했었던 일)
오버로딩과 오버라이딩은 같이 쓸 수 있는데 오타 때문에 다른 두 함수가 정의되었던 거였고, 내 Battle에서는 매개변수가 없는 PrintCharacterInfo를 이용해 매개변수가 있는PrintCharaterInfo를 호출하고 있는 상황이었고, 당연히 매개변수를 받지 말아야할 PrintCharacterInfo는 빨간줄이 뜨던 것이었다.
(근데 진짜 글자가 다른 게 정말 정말 눈에 잘 안 들어왔음)
이런 문제에 대한 해결책으로 자동완성을 쓰는 것을 제시를 해주셨다. 그리고 자동완성을 자주쓰고 눈에 익혀서 개발속도를 늘리는 것도 개발자의 능력이 된다고 하셨다. (자동완성 마구쓰자!)
아무튼, 이런 오류들이 있었는데 해결을 하고 빌드를 하여 디버깅을 해 보았다.
디버깅 잘 되니 기분이 좋았던 것도 잠시, 자잘한 문제들이 생겼다.
TXT RPG이니 몬스터들이 나오면 몬스터들을 숫자로 선택해서 선택한 몬스터를 공격해야 하는데, 선택한 숫자가 몬스터 리스트에 있는 몬스터의 위치보다 1이 컸던 문제...
선택지에 0이 없는데도 0을 입력할 수 있던 문제...
잘못된 선택지를 입력했는데도, 다음 Scene으로 넘어가던 문제...
서로 다른 사람들이 뇌가 연결되서 같은 생각으로 코드를 짤 수도 없는 노릇이고, 이 부분이 참 어려웠다.
자잘한 오류가 계속 생길때마다 코드 수정을 요청하려니, 좀 부담도 되고 미안해서 조금 더 코드를 점검하며 전체적으로 더 수정을 요청할 만한 사안이 있나 검토했던 것 같다.
어떻게 해야할까......아직도 고민이 되는 부분이다.
한 가지 해결방안을 제시하면, 빌드에 오류가 없는 코드에서 디버깅 로직에 문제가 있을 때, 한 사람이 디버깅을 하며 코드를 수정하고 그 수정사항을 메모해서 모두에게 공유하는 것이다.
오늘은 모두가 힘을 내어 문제없이 빌드를 끝마치고, 모두의 퇴근 시간에 내가 코드를 디버깅하며 설계적 오류(라고 하는 게 맞으려나?)를 고치며 마무리했다.
퇴근시간이라 남은 부분은 내일 수정해도 되니 모두 퇴근을 하는데, 나는 지금 그냥 마저 코드를 깔끔하게 정리해서 작동시키게 하고 싶어서 수정할 부분 수정하겠다고 하였다.
그리고 수정사항은 메모하여 팀원분들이 머지할 때 머리아프지 않게 하였다.(알아도 머리아플수도...)
아무튼 이런 문제들을 해결하며 느낀점은, 혼자 할 때 더 효율적인 부분이 있다는 것이다.
한 사람이 여러 문제점들을 종합적으로 파악하여 수정하고 수정사항을 공유하는 방식의 방법도 팀 프로젝트에서 요긴하게 쓰일 방법이 될 것 같다는 생각이 든다.
물론, 플레이어와 몬스터 클래스를 만드신 두 분이 이번에 처음 프로그래밍을 접하시는 거고, 이번 주차가 팀 프로젝트 첫 주차셔서 더 많은 난관에 부딪혔을 수도 있다.
하지만 이런 부분도 너끈히 해결할 수 있어야 훌륭한 프로그래머가 될 수 있지 않을까 싶다.
오늘의 TIL 마침.