우테코 프리코스 2주차 회고

서론

2주 차 우테코 문제는 1주 차에서 들여쓰기 제한과 삼항 연산자 제한 등의 가독성을 높이기 위한 요구사항이 추가되었다.

1주 차와 크게 달라진 점은 없었기 때문에 이전 포스팅에서 언급했던 MVC에 대해 연습해야겠다고 생각했고, 우테코 단톡방과 디스코드 커뮤니티에서 다른 사람들이 테스트 코드를 작성한다는 이야기를 보고 나도 테스트 코드를 작성해 봐야겠다는 생각에 2주 차에는 테스트 코드 작성 방법에 대해 공부하여 TDD 방식으로 개발을 진행해 보았다.

 

테스트 코드를 작성하면서 어려웠던 점

되돌아보면 2주 차 "레이싱 카" 문제는 구현해야 할 기능이 많지 않았기 때문에 단위 테스트 연습이 수월했던 것 같다.

테스트 코드를 작성하면서 가장 어려웠던 점은 테스트 코드 작성 과정에서 테스트를 위한 코드가 test 패키지가 아닌 main 패키지의 코드에도 적용이 되어도 괜찮은가?라는 고민이 있었다.

2주 차를 진행하는 당시에는 테스트를 위한 코드는 테스트 클래스에 작성하는 것이 맞지만, 접근 제어자를 private에서 default로 수정하는 정도는 괜찮지 않을까?라고 생각하여 작성한 메서드를 테스트를 위해 default 접근 제어자로 수정하였다.

 

피드백

하지만 3주 차가 지나고 3주 차 공통 피드백에 테스트 코드는 구현 코드와 분리되어야 하며, 테스트를 위해 접근 제어자를 바꾸는 행위도 좋지 않다는 피드백이었다.

private 함수를 테스트하기 위한 고려사항도 있었는데, 해당 역할을 수행하는 다른 객체를 만들어야 하는 타이밍일 수도 있다는 내용이었다.

그 이유는 테스트할 데이터 또는 메서드를 외부에서 주입하는 방식을 사용하면 private를 public으로 변경이 가능하며, 또한 테스트할 값을 전달하기가 용이하기 때문인 것 같다. (피드백에 있던 참고 자료 링크)

 

 

일급 컬렉션

테스트 코드 외에도 일급 컬렉션에 대해서도 찾아보았는데 생각보다 장점이 많은 것 같다고 생각하여 알아두면 좋을 것 같다.

일급 컬렉션이란 다른 필드 변수 없이 객체의 컬렉션 만을 필드로 가지는 클래스이며 아래와 같은 장점을 가진다.

 

상태 및 로직 관리

컬렉션을 클래스로 만듦으로써 상태와 로직을 한 파일에서 관리할 수 있고, 컬렉션에 클래스 이름이 적용되었기 때문에 가독성 측면에서도 이점을 가진다.

 

불변성

또한 컬렉션의 불변성을 보장할 수 있게 되는데 이 내용을 찾아보기 전에는 final을 사용하면 불변이 보장되는 줄 알았다.

하지만 Map을 Final로 선언해 놓고 new HashMap();으로 생성해 준 후 put으로 값을 넣으면 새로운 값이 계속해서 들어간다.

즉, 불변성이 보장되지 않는다. 그 이유는 final은 불변성 보장이 아닌 재할당 방지 역할이기 때문이다.

이때 컬렉션을 클래스로 감싸서 setter와 같이 데이터를 변경하는 메서드를 구현하지 않으면, 변경을 막을 수 있다.

 

 

마무리

일급 컬렉션은 내용이 어렵지 않고 이해가 잘 되어서 앞으로 유용하게 잘 사용할 수 있을 것 같지만, 테스트하기 용이한 코드를 작성하는 방법에 대해서는 아직도 너무 어렵기 때문에 테스트 코드 더 많이 작성해 보면서 체득해야 할 듯싶다.

 

 

구현 코드

코드 링크 👇

 

GitHub - jchyng/wooteco_racing_car: 우테코 6기 프리코스 2주차 자동차 경주

우테코 6기 프리코스 2주차 자동차 경주. Contribute to jchyng/wooteco_racing_car development by creating an account on GitHub.

github.com

 

 

Reference

일급 컬렉션

 

일급 컬렉션 (First Class Collection)의 소개와 써야할 이유

최근 클린코드 & TDD 강의의 리뷰어로 참가하면서 많은 분들이 공통적으로 어려워 하는 개념 한가지를 발견하게 되었습니다. 바로 일급 컬렉션인데요. 왜 객체지향적으로, 리팩토링하기 쉬운 코

jojoldu.tistory.com

TDD 책

 

'활동 > 우테코' 카테고리의 다른 글

우테코 프리코스 3주차 회고  (0) 2023.11.22
우테코 프리코스 1주차 회고  (2) 2023.11.20