Search
2️⃣

2 주차 과제

태그
프리코스
목차

 기능 명세 작성하기

게임시작

경주할 자동차의 이름을 , 로 구분하여 받는다.
이름은 5 자 이하만 가능하다.
예외는 IllegalArgumentException 이며, 예외 발생후 애플리케이션은 종료되어야 한다.
시도할 횟수를 받는다.
Console.readLine() 의 경우 String 형태로 받는다. 때문에 변환할 필요가 있다.
숫자외의 값이 입력되면 IllegalArgumentException 를 발생 시킨다.

게임진행

0 - 9 사이의 랜던값을 구한 후 랜덤값이 4 이상일 경우 전진한다.
시작시 받은 횟수만큼 진행한다.

게임결과 출력

판정한 결과를 토대로 게임 결과를 출력한다.

최종 우승자 판정

경주 게임을 완료하고 각 자동차별로 카운트 된 횟수를 집계하여 우승자를 결정한다.
우승자는 한 명 이상일 수 있으며, 여러명인 경우 쉼표를 이용하여 구분한다.
이때 출력 형식은 이름, 이름 이다.

공통

indent depth 는 2 까지 허용한다.
3 항 연산자를 사용하지 않는다.
함수가 한가지 일만 하도록 작게 만든다.
JUnit 5 와 AssertJ 를 이용하여 테스트 코드를 만든다.

초안 작성과 테스트 통과

이전과 같이 객생체에서 지킬수 있는것을 최대한 지키고, 단일책임 원칙을 지켜서 기능 구현을 하였습니다. 그리고 이전 코드리뷰 에서 매직넘버에 관한 내용을 보아서 이를 사용하지 않도록 하였습니다.

테스트 코드에 대한 고찰

TDD (Test-Driven Development)

소프트웨어 개발 방법론 중 하나로 테스트를 먼저 작성하고 해당 테스트를 통과하기 위한 코드를 작성하는 접근 방식을 말합니다. 이를통해 신뢰성이 높고, 더 나은 설계와 좋은 구조의 코드를 작성할 수 있습니다. 또한 초기 개발 단계에서 버그를 발견하고 수정하는 데 도움이 되며, 개발 진행사항과 문서화에 대한 장점도 존재합니다.

항상 옳은 방법일까?

TDD 의 적절한 적용 여부는 프로젝트의 특성, 개발 팀의 선호와 경험, 그리고 특정 상황에 따라 달라질 수 있습니다. TDD 를 처음 시작할 때 학습 곡선이 있기 때문에 테스트를 작성하고 이를 만족시키는 코드를 작성하는 과정에서 개발시간이 늘어날 수 있습니다. 또한 모든 것을 테스트하기 위해 과도한 단위 테스트를 작성하는 경우가 있을 수 있습니다. 외부 시스템과의 연동 … 등의 상황에서는 효과가 미미할 수 도 있습니다.

그럼 이번 과제에서는요?

TDD 방법론을 사용하여 과제를 수행했으면 정말 좋았겠지만! 아직 테스트 코드 작성에 익숙하지 않고, 공부중인 단계라 초안을 작성하고 필요한 부분만 단위테스트를 진행하는 것으로 결정하였습니다. 아직은 테스트 코드를 ‘왜’ 작성해야하고, 작성하면 ‘왜’ 좋은 것인지 알아가야 할 단계라 생각하기 때문입니다.

그렇다면 어떤것을 테스트할 예정인가요?

InputValidator

lengthOfCarNameValidate
자동차 이름이 5 자를 넘겼을 때 예외를 잘 던지는지 테스트
gameCountValidate
숫자외의 다른 문자를 넣었을 때 예외를 잘 던지는지 테스트

ResultGenerator

determineMoveOrStop
랜덤값이 4 이상일 때 true 를 반환하는지 테스트
랜덤값이 4 일 때 true 를 반환하는지 테스트
랜덤값이 3 일 때 false 를 반환하는지 테스트

WinnerFinder

임의의 리스트를 만들어 모든 메서드를 테스트
예상하는 결과가 나오는지 테스트

회고

169
pull

1주차를 마치고 만난 코드리뷰

지원할 때 어쩌다 알게된 동료에게 코드리뷰를 받으며 많은 것을 놓치고 있다 생각했습니다. 그래서 다시 필요한 부분을 공부하고, 리팩토링을 진행해야겠다는 생각을 했죠. 또한 이를 다음 주차에는 적용하여 더 나은 코드를 만들어봐야겠다고 다짐했습니다.

2주차를 마치고 나니

테스트코드를 작성하는것이 이번 주차의 목표였습니다! 많이 들어보기는 했지만, 처음 접해보는거라 TDD 까지 적용하는 것은 무리라 판단. 내가 테스트코드를 왜 작성해야하는지, 어떤 장점이 있는지에 대한 고찰부터 시작해보았습니다. 과정과 도전에 관한 부분은 노션에 꼼꼼히 기록하였습니다. 다음 주차때 이를 반영하여 더 나은 결과물을 만드는 것이 목표! 입니다.
벌써 절반을 지났군요... 남은 주차도 화이팅 해서 좋은 결과를 낼 수 있도록 해야겠습니다.