이번 2주 차 미션은 자동차 게임이 나왔다!
1주차 공통 피드백!
- Java에서 제공하는 API를 적극 활용한다.
- 배열 대신 Java Collection을 사용한다.
- 공백 라인을 의미 있게 사용한다. 공백도 코딩 컨벤션이다
- 축약하지 않는다.
- 커밋 메시지를 의미 있게 작성한다.
- 요구사항을 정확히 준수한다.
이번에 추가된 요구 사항
- indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
- 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
- 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다.
- 3항 연산자를 쓰지 않는다.
- 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라.
- JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.
- 테스트 도구 사용법이 익숙하지 않다면 test/java/study를 참고하여 학습한 후 테스트를 구현한다.
그리고 미션 메일에 나온 내용
2주 차 미션에서는 1주 차에서 학습한 것에 더해 함수를 분리하고, 각 함수별로 테스트를 작성하는 것에 익숙해지는 것을 목표로 하고 있어요.
메일을 보고 추가된 요구 사항을 읽어보니 이어지는 부분이 많았다!
함수를 분리하고 ⇒ 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라. 각 함수별로 테스트를 작성하는 것 ⇒ JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.
기능 목록 정리
기능 목록 별로 최대한 자세하게 나누도록 노력했으며, 클래스처럼 세세한 부분은 언제든 설계가 바뀔 수 있으므로 넣지 않았다!
함수를 한 가지 일만 하도록 작게 만들며 깨달은 점
- 자연스럽게 indent depth가 1이 되었다.
- 메서드가 분리되어 네이밍을 통해 의도를 쉽게 드러낼 수 있게 되었다.
- 개인적으로 생각이 든건데 요구사항이 바뀐다고 가정하면 재활용이 가능할 수도 있지 않을까..??
조건문과 반복문이 덕지 덕지 발라져 있는 하나의 기능에서 분리를 해서 메서드 명을 통해 의도를 쉽게 알려줄 수 있는 방법이 제일 중요하지 않을까? 생각이 든다.
각 함수별로 테스트 할 때 꿀팁!
인텔리제이에선 테스트 커버리지라는 기능이 있습니다!
커버리지 사용 방법
저는 domain 부분에 대해 함수별로 테스트를 다 했는지 확인하고 싶어 domain 파일에 대한 커버리지를 검사하였습니다!
테스트 파일에 domain 우클릭 → More Run/Debug → Run ~~~ with Coverage
이 기능을 사용하면 테스트 한 메서드와 안 한 메서드를 한눈에 알아볼 수 있어 정말 편리한 기능입니다!
테스트 커버리지가 무엇일까?
테스트 커버리지란 시스템 및 소프트웨어에 대해 충분히 테스트가 되었는지를 나타내는 정도입니다.
그래서 저는 이 기능을 활용하여 충분히 메서드들이 테스트 되었는지 확인하기 위해 사용하였습니다.
테스트를 왜 사용해야 할까?
- 초반 기능 구현에 대한 시간이 더 들지만, 결국 완성에 대한 시간은 줄어든다! 왜냐하면 테스트 코드를 통해 쉽게 검증이 가능하기 때문!
- 기능 구현 완료 후 초기에 미처 놓칠 수 있는 문제점을 빠르게 발견할 수 있다!!
- 내가 짠 코드에 대해 의도대로 작동하고 있다는 안정감을 가질 수 있다!
궁금한 점
Randoms.pickNumberInRange 함수에 대해 테스트를 할 수 있을까?
@Test
void generate_메서드는_0에서_9사이의_값을_반환한다() {
NumberGenerator numberGenerator = new RandomNumberGenerator();
assertThat(numberGenerator.generate()).isBetween(0, 9);
}
각 함수별로 테스트를 해야해서 이렇게 작성을 하긴 했지만, 사실 이걸로 확인할 수 없는 불확실성이 있다고 생각한다.
왜냐하면 이 테스트를 진행할 때 0에서 9 사이의 숫자만 나오면 테스트과 통과되는데 버튼을 누를 때만 운 좋게 0에서 9 사이의 값이 나올 수도 있지 않을까라는 생각이 들어서이다.
랜덤 값은 믿음의 영역인지 궁금하다!
이번 미션도 참 재미있고 얻어가는 지식이 많은 한 주 였다!!
'대외 활동 > 우아한테크코스 6기 BE' 카테고리의 다른 글
우아한테크코스 6기 4주차 프리코스 회고록 (0) | 2023.11.16 |
---|---|
우아한테크코스 6기 3주차 프리코스 회고록 (0) | 2023.11.09 |
우아한테크코스 6기 1주차 프리코스 회고록 (0) | 2023.10.24 |