All :L
[우아한테크코스] 프리코스 3주차 회고록 본문
프리코스 3주차를 마치며...
이번 로또 미션은 지난 미션에서 적극적으로 사용했던 OOP의 특징과 TDD를 더 활용해 볼 수 있었다.
미션의 시작 단계에서는 여전히 클래스 구조와 메소드 세분화에 대한 고민이 많았다. 이전보다 더 많아진 기능을 어떻게 세분화해야 할지 고민이 되었다. MVC 패턴을 잘 사용하고 싶은데 아직 어려운 것 같아 더 힘들었다. 또한, 어떻게 하면 코드의 가독성을 더 높이고 유지보수를 용이하게 할 수 있을지에 대한 생각이 많았던 것 같다.
https://github.com/jhw296/java-lotto-7/tree/hyewon
초기 단계에는 이전 미션을 바탕으로 익힌 기능별 클래스 구분 경험을 활용해 클래스를 작성했다. 이 과정에서 코드를 한 파일에 모두 작성하는 것이 아닌 기능별로 클래스를 나누어 구현하는 것이 얼마나 효율적인지를 실감했다. 따라서, 이번에도 기능별로 클래스를 구분해보기로 했다. 이때, 이번 미션에서는 새로운 방법인 MVC(Model View Controller) 패턴을 적용해보았다. MVC 패턴을 공부하며 해당 패턴을 사용하면 구조적 설계를 통해 코드의 명확성을 더 높일 수 있다는 것을 알게 되었다. 그래서 Model 클래스와 View 클래스, Controller 클래스를 사용해 구조를 설계했다. 확실히 각 기능별로만 클래스 구조가 작성되어있을 때보다 가독성이 좋은 것 같다는 느낌이 들었다.
또한, TDD를 제대로 하기 위해 테스트 케이스를 꼼꼼히 작성해 보았다. 이후 중반부에 들어서면서 작성했던 테스트 케이스를 바탕으로 코드를 작성해 테스트 도구를 활용해 코드를 검증했다. 이전 미션에서 테스트 케이스를 작성할 때는 예외 처리에 대한 테스트 케이스만 작성했었다. 하지만, 이번 미션에서 테스트 케이스를 작성할 때는 정상적인 출력과 예외 처리를 모두 고려한 다양한 테스트를 설계했다. 이러한 방법을 통해 코드의 안정성을 확보하는 방법을 배웠다.
후반부로 넘어가면서는 리팩토링을 통해 코드의 품질을 더욱 높였다. 매직 넘버를 상수로 대체하고, 에러 메시지를 관리하는 등 세부적인 개선 작업을 통해 코드의 가독성과 유지보수성을 향상시켰다. 이 과정을 통해 작성했던 코드를 여러 번 다시 읽어보며 코드의 문제점을 발견하고 수정할 수 있었다.
마지막으로 이번 미션을 통해 MVC 패턴을 사용해봤는데 아직은 확실히 미숙한 것 같다. 다음 미션에서는 조금 더 공부해서 더 나은 구조를 작성해보면 좋을 것 같다. 또한, 프로젝트 구조를 모두 작성하고 나서 테스트 케이스를 작성했다. 하지만, 생각해보니 프로젝트 구조를 작성하기 전에 다양한 테스트 케이스를 생각해 본 후 이때, 정리된 기능들을 바탕으로 구조를 작성하는 것이 더 좋을 것 같다는 생각이 들었다. 따라서 다음 미션에서는 TDD와 리팩토링의 중요성을 더욱 신경 써야 할 것 같다고 생각했다. 또한, 전체적인 흐름을 이해하고 코드를 작성하는 데 있어 체계적인 접근이 필요하다는 것을 느껴 다음 미션에서는 적극적으로 배운 내용들을 활용해볼 생각이다.
https://translucent-mitten-47f.notion.site/3-1331304e880280d59c6dc21a2d0f55bf?pvs=4