✨ 목표
마지막 4주차 프리코스에서 피드백과 코드리뷰를 통해 적용 및 공부하기로 마음을 먹은 부분은
1.Stream을 활용 심화
2.객체는 객체스럽게 사용
3.필드의 수를 줄이기 위해 노력
4.ParameterizedTest
5.함수형 프로그래밍 활용
5가지였다.
🔍달성
Stream을 활용 심화
stream의 경우에는 코드리뷰를 받았는데, Stream에 대해서 제대로 공부하지 않고 주먹구구 식으로 사용했기 때문에, 이를 공부해 더 자유롭게 Stream을 활용할 수 있도록 마음을 먹었다.
stream의 장점이라고 생각하는건 언제든 병렬로 처리할 수 있도록 큰 노력없이 변경이 가능하고, 가독성과 간결성을 챙기기 위해서다. 그리고 컬렉션을 잘 활용하기 위해 stream을 사용해야 된다고 생각했다.
객체는 객체스럽게 사용
두번째인 객체는 객체스럽게 사용에 대해서도 많은 고민이 있었다.
기존에는 Lotto라는 객체의 필드를 get()해서 스트림을 돌리거나,
이번에 새로 진행한 OrderCart(주문한 메뉴를 담은 클래스)에는 key로 주문한 메뉴, value로 주문수량을 담은 멤버변수를 갖고 있고 특정 메뉴가 포함되었는지, 음료만 담겼는지 등을 체크하는 메소드가 있다.
3주차에서 말한 피드백을 몰랐다면 Order(주문을 관리하는 클래스)에서 orderCart.getMenus().contains~~~와 같은 형식으로 진행했지만, OrderCart에 단지 음료만 있는지를 묻고, 음료가 있는지는 OrderCart의 역할이기 때문에 꺼내지않고 메시지를 던지도록 함수를 변경하였다.
이게 그동안 이론으로 알고있었던 .을 두번 찍으면 안된다로 오해하던 디미터의 법칙과 연관이 있다는 것도 알게 됐다.
필드의 수를 줄이기 위해 노력
세번 째 필드의 수를 줄이기 위한 노력이 가장 어려웠던 것 같다.
계속해서 객체를 생성하고, 변경하고, 제거하는걸 반복했고 이 과정들을 겪으며 깨달은것은 2주차 피드백에서도 말했던 함수가 한가지 역할을 하게 하라와 비슷한 의미라고 느꼈다.
결국에는 함수는 하나의 역할을 하게 만들고, 클래스도 하나의 역할을 해야한다. 결국 관심사의 분리를 말하는 부분이라고 생각했고, 결국 수정끝에 나름 만족스러운 결과를 얻을 수 있었다.
ParameterizedTest
네번 째는 크게 어려운 부분은 없었다.
중복해서 검증해야 하는 크리스마스 이벤트 날짜가 평일인지, 주말인지를 검증하는 부분에서 평일과 주말의 일자를 ParameterizedTest와 ValueSource 어노테이션을 활용해 해결할 수 있었다.
중복되는 의미없는 테스트를 줄이고, 모든 경우를 리터럴로 처리할 수 있어서 신기했고, 더더욱 테스트의 중요성을 느끼게 됐다. 우테코 피드백에서 해준것 중 가장 와닿았던 부분은 '테스트도 코드이다.' 였다. 결국 어떻게 해야 테스트를 더 효율적으로, 가독성있게 작성할 수 있는지에 대해서도 고민을 했었다.
함수형 프로그래밍 활용
함수형 프로그래밍 활용은 생각보다 많은곳에서 활용했다. stream과 연계해서 사용자에게 알려주는 경우 편하게 사용할 수 있었고
사용자의 입력을 받을때 만약 입력이 잘못된 경우거나 비즈니스 로직에 맞지 않다면 입력을 다시 받아야 하는데
private T parse(String input, Function<String, T> parser)
와 같은 함수를 받아 반복되는 특정 작업을 처리할 수 있도록 만들어 해당 함수를 실행했을 때, Exception이 발생하면 다시 입력을 받는 복잡하고 길어질 수 있는 로직을 쉽게 처리할 수 있었다.
우테코 끝, 그리고 새로운 목표
우테코의 전체적인 소감은 나 자신이 아직도 많이 부족하고, 너무나 잘하는 사람들이 많다. 열심히 해야겠다! 라고 생각한다. 하지만, 객관적인 내 위치를 평가할 수 있는 좋은 기회였다고 생각한다.
가장 좋은점은 내 의지라는 기름에 불을 붙여줬다는 것이다. 코드를 보면서, 리뷰를 받으면서 그동안 느끼지 못했던 나의 잘못된 습관(삼항연산자와 else 사용 등)이나 태도(얕게만 알고 넘어간 부분)들에 대해서 짚고갈 수 있었던 기회도 됐다.
그리고 개인적으로 블로그 포스팅에 조금 부담을 느꼈었는데, 모르는 지식을 공부해서 정리한다는게 정말 많은 도움이 되는걸 알게됐고 부담도 사라졌다. 후회없는 한달의 여정이었고 정말 깊게 몰입해서 사람들과 재밌게 미션을 진행할 수 있어서 행복한 한달이었던 것 같다.
'Study > 우아한 테크 코스' 카테고리의 다른 글
[우아한 테크 코스] 프리코스 - 3주차, 로또 회고 (0) | 2023.11.10 |
---|---|
테스트는 왜 해야할까? 내가 생각하는 테스트코드를 작성하는 이유 (0) | 2023.11.06 |
[우아한 테크 코스] 프리코스 - 2주차, 레이싱카 회고 (1) | 2023.11.04 |
private 메소드 테스트 꼭 해야 할까? (0) | 2023.11.02 |