!!! 우테코 자소서를 읽어봐달라는 메일 보내지 마세요 !!!
너무 많이와서 힘들어요 어차피 답장도 안할꺼니깐 보내지 마세요
보낼 생각 없었다면 ㅈㅅ함니다 ><
💋 인트로
이번 포스팅에서는, 우아한테크코스 5기 프리코스 2주차 숫자야구게임 회고를 해보려고 합니다.
💋 회고
1주차를 시작하면서는 JAVA 기초 문법도 모르는 상태였다.
1주차는 JAVA 기본 문법 조차 헷갈려서 어리버리했다면
2주차는 기본적인 문법은 조금 익숙해진 상태에서 진행했다.
이번 주 숫자 야구 미션에서는 객체 지향 프로그래밍을 실천해보고자 많이 노력했다. 작은 기능을 가지는 부품을 만들고, 모두 연결해 큰 프로그램을 완성하기 위해서 내가 구현할 기능에 대한 목록을 아주 촘촘하게 짜는 것이 중요했다.
1주차와 마찬가지로 반복을 줄이고 싶어서 공통적으로 들어있는 부분을 찾아내 함수로 분리하는 데에 애썼다. 메서드를 분리할 때에도 들어가는 파라미터와 return값을 상식적으로 만들고 싶었지만 분리할 때 깨끗하게 잘 분리가 되지 않는 경우가 많았다. 때때로 분리하는게 더 지저분한가 싶기도 했지만 우테코의 요청이 함수를 최대한 작게 분리하는 것이었기 때문에 가장 많이 분리하려고 노력했다.
테스트 코드를 작성하는 과정도 험난했다. 처음 사용해 보는 junit를 유튜브 강의를 통해 공부했고, 좋은 학습자료를 얻어서 모두 읽어보았다. BeforeEach로 테스트 코드 조차 반복을 줄일 수 있다는 것을 알게 되었을 때 진짜 기뻤다. 역시 개발자들은 반복을 굉장히 싫어해서 온갖 방법을 동원해 반복을 피하려 한다는 것을 체감했다. 또 Test Coverage가 100%가 되는 테스트 코드를 작성하기 위해서 노력했다. 가장 어려웠던 부분은 input이나 println을 통해 출력된 값을 검사하는 것이었다. 이 점은 아직 해결하지 못했다.
파이썬 때 배웠던 클래스에 대해서도 그때는 왜 이렇게 분리하는게 좋은지 몰랐는데 당장 테스트 코드만 만들어봐도 클래스를 만들고 복제하는 과정이 얼마나 편리한 지 알았다. 공부는 인류가 삽질하던 길고 긴 모든 과정을 다 건너뛸 수 있는 수단이라는 점에서 매력적이다.
제일 어려웠던 것은 우테코에서 지정해준 라이브러리를 사용하는 것이었다. API를 모두 타고 들어가 가장 바닥의 문서부터 읽어보았지만 잘 이해가 되지 않는 부분이 많았다. 특히나 ReadLine에 대해서는 어떻게 사용해야 할 지 감을 잡기 어려웠는데 직관적으로 코딩하고 테스트해보니 잘 돌아갔다. 사실 눈치상 작성한 코드가 잘 돌아간 것이지, 모든 api document를 제대로 이해했다고는 생각되지 않았다. 도서관에서 빌린 [혼자 공부하는 자바] 라는 도서에 나온 API문서 읽는 내용을 모두 정독했다. 어렴풋이 이해는 했지만 아직 내것이라는 느낌이 없기에 더 공부할 부분이 많은 것 같다.
코드를 모두 작성한 후, 나의 코드에 굉장히 많은 반복문과 조건문이 있었다. 함수를 통해 줄이는 방법은 이미 사용하고 있었기에, 컬렉션 프레임워크를 공부했다. 공부의 내용은 docs에 저장해 깃허브에 올려 놓았다. 컬렉션 프레임워크에서 제공되는 list.contains(Object) 와 같은 메소드를 통해서 많은 코드를 절약하고 가독성도 높일 수 있게 되었다. 추가로 코드 개선을 위해서 스트림에 대한 공부도 시작하게 되었다. 분명히 코드가 줄어들고 편리한 면도 있지만, 가독성이 오히려 좋지 않아진다는 이유로 갑론을박이 있는 것 같아서 스트림에 대한 나의 생각을 분명히 하기까지는 문법은 공부하되 코드에 사용은 하지 않을 예정이다.
컨디션 관리의 중요성도 알게 되었다. API를 타고 들어가 readLine에 대한 설명을 읽는데, 컨디션이 안 좋은 날에는 너무 어렵게 느껴져서 벽같이 생각되었지만 식사 후에 천천히 들여다 보니 조금씩 이해가 되기 시작했다.
또한 보기 좋은 코드를 넘어서 컴파일하는 데에 들어가는 속도도 생각하게 되었다. 정규 표현식을 비교할 때에 Pattern을 선언과 동시에 컴파일하여 성능을 향상시킬 수 있다는 것을 알게 되었고 이와 비슷한 문제는 우테코에서 배우고 싶다.
실수를 최소화하는 코딩을 하고 싶다. 출력 문구에 오타로 인해서 자꾸 오류가 났을 때 하드 코딩을 제거하는 법을 알게 되었다. 기능 목록을 만들어 작성할 코드에 압도되지 않고 하나씩 차례대로 해치워나가는 것을 통해서, 큰 문제를 해결하는 방법도 배웠지만, 이것이 바로 자바의 객체 지향을 실천해나가는 방법이라고 느꼈다.
https://github.com/eunkeeee/java-baseball
https://github.com/woowacourse-precourse/java-baseball/pull/36
💋 공부한 책
[혼자 공부하는 자바]라는 책을 통해서 공부했다. 선택한 이유는 별 거 없고, 도서관에 남아있었기 때문이다.
꽤나 유용했고 많은 내용이 담겨있다. 이번주에는 스트림에 관한 내용을 읽고 정리해 봐야겠다.
💋 더 공부해볼 내용
같이 지원하신 분께 SoC(separation of concerns)에 대해 공부해보고, 역할에 따라 클래스를 분리하는 연습을 하면 좋을 것 같다 피드백을 받았다. 예시로 MVC 패턴 등을 이용하여 비즈니스 로직과 UI 로직을 분리하는 연습을 하면 좋을 것 같다 하니, 천천히 해 봐야겠다!!!
참고: https://sehun-kim.github.io/sehun/solid/
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
'우아한테크코스5기' 카테고리의 다른 글
[우테코] 코드 품질: 좋은 코드는 어떤 코드일까? (0) | 2023.02.08 |
---|---|
[우테코] 단위테스트: 좋은 단위테스트에 대한 고민... 단위테스트는 꼭 필요한 것일까? (0) | 2023.02.08 |
[우테코] 자바 쌩초보의 우아한테크코스 5기 최종 합격 후기 (11) | 2023.01.02 |
[우테코] 우아한테크코스 5기 프리코스 4주차 다리건너기 회고 (0) | 2022.11.22 |
[우테코] 우아한테크코스 5기 프리코스 3주차 로또 회고 (1) | 2022.11.14 |