[우아한테크코스 백엔드 5기] 프리코스 2주차 후기 (숫자 야구 게임)

드디어 본격적인 시작을 알리는 2주차가 시작되었습니다 !

2주차는 1주차에서 배운 점들을 최대한 적용하여 과제를 진행하기 위해 다음과 같이 2주차 를 세웠습니다.

저는 제 나름대로 이 목표들을 다 달성해서 제출했다고 생각하지만

과연 이 목표대로 이번 과제를 잘 했는지 결과가 궁금하네요 🙄🙄

 

이번 2주차 숫자 야구 게임 역시 배우고 느낀 점들이 참 많았는데요.

그 내용들에 대해 하나씩 정리해보자 합니다.

 


새롭게 배운 것과 느낀 점들

 

인텔리제이 사용

1주차는 이때까지 자바의 정석을 독학하면서 이클립스를 사용해 익숙한 이클립스를 사용했었습니다.

그리고 이클립스와 인텔리제이의 차이점을 검색했을 때 이클립스는 무료인 반면 인텔리제이는 유료라는 말이 있었기 때문에 이클립스를 사용하고 있기도 했었습니다.

하지만 우테코 참가자분들의 다수가 인텔리제이를 사용하더라구요 ?

그래서 물어본 결과 인텔리제이가 무조건 유료인 것이 아니였고 무료버전도 있었습니다.

만약 저처럼 인텔리제이가 비싸서 안쓰던 분들은 인텔리제이 다운로드를 검색해 아래처럼 Community로 다운받으시면 됩니다!

 

2주차에 인텔리제이를 써보니까 확실히 많은 사람들이 인텔리제이를 사용하는 이유를 알겠더라구요

이클립스와 너무 달랐습니다.

자동 완성 기능, 추천 기능, 등등 VScode처럼 확장도 되고, 편리한 기능들이 참 많이 있더라구요

기존에는 VScode를 사용했기에 저와는 너무 잘 맞았습니다.

그리고 무엇보다 디버깅도 너무 편했고, 테스트 케이스를 확인하고 인텔리제이에서 터미널을 이용할 수 있는 부분도 너무나도 편리했습니다. 강추 👍

 

 톱레벨 클래스들을 서로 다른 소스 파일로 분리 규칙

톱레벨 클래스란, 중첩되지 않은 클래스

즉, 다른 클래스나 인터페이스 내부에 선언되지 않은 클래스를 의미합니다.

 

만약 톱 레벨 클래스를 하나의 소스파일에 여러 개 선언한다면 위험이 발생하는데

그 예시로 https://wisdom-cs.tistory.com/56 왼쪽 링크 참고하면 도움이 될 것입니다.

 

위와 같은 규칙을 적용하게 된 이유는, 기존에는 한 소스파일에 여러 코드들을 작성하는 방식이였는데

indent depth가 3이 넘지않고, 메서드가 하나의 기능만을 하도록 기능들을 아주 작은 범위로 쪼개기 위한 목표를 달성 하기 위해

소스파일을 작성하다보니 소스파일이 너무 길어져 가독성이 떨어짐을 느꼈습니다.

 

그래서 위와 같은 규칙을 알게 되었고 각 대상 별로 소스파일을 나누어 해당하는 README.md에 적은 기능 목록에 따라 대상 별로 수행할 (기능) 메서드들을 담았습니다.

 

이 규칙을 적용하여 소스파일을 분리하고 나니 기존 코드보다 훨씬 가독성 뿐 아니라 깔끔한 코드가 되었습니다.

그렇게 완성된 코드를 실행하면서 접근 제어자와 멤버변수, 멤버메서드들로 인한 에러들을 여러번 겪다 보니, 

평소에 이론만 알고 있었고 실전에 크게 적용해보지 못했던 접근제어자와 멤버변수, 멤버메서드에 대해 다시 한번 복습할 수 있었고

접근 제어자를 이용한 캡슐화멤버변수 멤버메서드의 적절한 활용을 몸소 느끼게 되어 중요성크게 깨닫게 되었습니다.  👍

 

JUnit5를 이용한 테스트 코드 작성

"함수를 분리하고, 각 함수별로 테스트를 작성하는 것에 익숙해지는 것을 목표"

위 말을 보고 "이번 주차는 테스트 통과는 물론 JUnit5로 테스트 코드 작성하는 법에 대해 배워야겠구나"라고 생각이 들었습니다.

JUnit5를 공부하면서 크게 깨달음을 얻은 부분이 있는데 바로 TDD ( 테스트 주도 개발 ) 입니다.

TDD가 테스트 코드를 작성하고 리팩토링을 거쳐서 최종 코드를 만든 다는 이론은 알았지만

어떤식으로 테스트 코드를 작성하는지에 대해서는 몰랐었습니다.

하지만 JUnit5를 공부하고 보니 TDD란 무엇인가 ? 에 대해 확실히 이해할 수 있었습니다.

 

그렇게 TDD란 이런 거구나 ~ 하고 정리한 내용들을 바탕으로 JUnit5로 테스트 코드를 작성 해보려 하는데,

아직 익숙하지 않아서 그런지 테스트코드를 엄청 잘 짜고 싶었지만 생각 보다 많이 어렵더라구요 ..

테스트 코드하나 짜는데 생각보다 시간이 많이 걸리기도 하고 제공해주는 테스트 코드처럼 잘 짜고 싶은데 마음처럼 잘 되지가 않았습니다 😫

일단은 위 처럼 작성한 메서드들을 테스트하는 테스트 코드는 만들어 봤지만, 솔직히 이렇게 짜는게 맞는지도 모르겠고...

테스트 코드를 배우는게 하나의 작은 언어를 배우는 것 같달까 ?? 만만한게 아니라는 것을 느끼게 되었습니다.

나중의 협업을 위해서라도 테스트 코드 작성법에 대해 익히고 테스트 주도 개발에 익숙해질 수 있도록 노력해야겠습니다. 👊🏻