[우테코 프리코스 2주차] 레이싱 게임 회고

이승우·2023년 11월 5일

이번주도 너무 바빠서 늦은 회고를 올린다.. 일주일 동안 정말 많은 것을 배우고 느꼈다.

1. 확장성과 단순성

이번 미션을 구현하면서 80%는 이것에 대해 고민했다. 이전에 언급한 일급콜렉션과 원시값 포장을 적용한다면 프로그램이 확장되거나 요구사항이 바뀌었을 때 유연하게 대처할 수 있을 것이다. 하지만 기존 요구사항만을 지킨다면 코드가 정말 단순해진다. 어느 정도 까지의 확장성을 고려해서 구현을 해야할지 계속 고민했다.
다른 분들의 코드를 보며 느낀 것은, 코드를 깔끔하고 객체지향적으로 잘 짜는 분들이 많다는 것이다. 많은 분들이 과제 통과에 무리가 없을 것이고 그렇다면 내가 뭔가를 보여줘야하는데.. 그 뭔가를 보여주려면 코드가 너무 복잡해진다. 정말 일주일 내내 이 고민만 했다.
서비스를 구현할 때를 생각한다면 확장성을 고려하는게 분명 맞는데, 프리코스 미션을 진행할 때 만이라도 확장성을 버려야하는가... 아직 잘 모르겠다.

2. 원시값 포장의 목적

내가 설계한 구조는 CarNamePosition을 필드변수로 가지고 있는 구조다. 근데 두 개를 원시값 포장을 하고 나니 코드가 복잡해지고 메서드 중복이 일어났다. 라운드 별 결과를 가져올 때 굳이 한번 더 내부로 들어가서 값을 가져올 필요가 있나? 라는 생각이 들었다. 이 부분에서 걸려서 한참을 고민하다가 원시값 포장을 적용하지 않으면 Car가 name,position에 대한 유효성 검사, 관리까지 해야 하기 때문에 역할이 너무 많아진다는 것을 깨달았다. 자신의 역할에 집중하게 하는 것이 원시값 포장의 목적 중 하나다. 이론적으로 알고 있었음에도 실제로 구현해 보니 필요성을 더욱 이해할 수 있었다.

3. 이름을 잘 짓자

1주차 피드백을 받고 뜨끔했다. 구조에 너무 신경을 쓴 나머지 메서드나 변수, 클래스의 이름 짓는걸 신경을 못 쓴 것 같다. 내가 지은 이름이라 못 지었단 생각을 못했고 2주차에는 최대한 이해가 되게 지어봤다. 근데 이게 정말 어려웠다. 프로젝트를 할 때나 데이터분석 과제를 할 때 정말 대충지었는데, 지금부터라도 기능과 역할에 맞게 짓는 습관을 들여야겠다.

4. 테스트코드의 중요성

2주차의 핵심이었던 것 같다. 3주차 미션에서 추가된 요구사항은 객체/메서드가 하나의 기능만 하는 것이었는데 테스트코드와 연결된 다는 것을 느꼈다. 내가 하나의 메서드를 구현을 했을 때 내가 예상한 대로 잘 실행되는지 확인하는 것이 테스트코드이다. 근데 만약 하나의 메서드에 여러가지 기능을 만들어 놓는다면 테스트하기가 어려워진다. 만약 A,B,C 3가지 기능을 한 메서드에 넣어놓는다면 난 C기능만 테스트하고싶은데 필요없는 A,B기능까지 다 돌아가기 때문이다.
테스트코드를 작성하면서 어렵다면, 객체나 메서드의 분리가 제대로 되지 않았다는 것을 의미할 수도 있다. 테스트코드를 바로 작성한다면 기능의 문제도 알 수 있고, 심지어는 구조의 문제점도 빠르게 알 수 있을 것이다. 기능을 구현하고 테스트코드를 작성하는 습관을 들이는 것이 중요할 것 같다.

0개의 댓글