GitHub - jhw296/java-lotto-7 at hyewon
<aside> ✅
이번 미션은 객체 지향 프로그래밍과 테스트 주도 개발(TDD)의 실제로 적용해 보는 경험을 할 수 있는 소중한 기회였습니다. 미션의 시작 단계에서는 클래스 구조와 메소드 세분화에 대한 고민이 많았습니다. 이전보다 더 많아진 기능을 어떻게 세분화해야 할지 고민하고 방법을 고안했습니다. 또한, 어떻게 하면 코드의 가독성을 높이고 유지보수를 용이하게 할 수 있을지에 대한 생각이 많았습니다.
초기 단계에는 이전 미션을 바탕으로 익힌 기능별 클래스 구분 경험을 활용해 클래스를 작성했습니다. 이 과정에서 코드를 한 파일에 모두 작성하는 것이 아닌, 기능별로 클래스를 나누어 구현하는 것이 얼마나 효율적인지를 실감했습니다. 이때, 이번 미션에서는 새로운 방법인 MVC 패턴을 적용했습니다. MVC 패턴을 사용하면 구조적 설계를 통해 코드의 명확성을 높일 수 있다는 것을 알게 되었습니다.
중반부에 들어서면서 테스트 케이스를 작성하고 이를 통해 코드를 검증했습니다. 다른 미션에서 테스트 케이스를 작성할 때는 예외 처리에 대한 테스트 케이스만 작성했습니다. 하지만, 이번 테스트 케이스를 작성할 때는 정상적인 출력과 예외 처리를 모두 고려한 다양한 테스트를 설계했습니다. 이를 통해 코드의 안정성을 확보하는 방법을 배우게 되었습니다. 특히, 초기 단계에서 테스트 케이스를 작성하고 이를 바탕으로 기능을 구현해 나가는 방식이 TDD의 장점을 체감하게 해주었습니다.
후반부로 넘어가면서는 리팩토링을 통해 코드의 품질을 더욱 높일 수 있었습니다. 매직 넘버를 상수로 대체하고, 에러 메시지를 관리하는 등 세부적인 개선 작업을 통해 코드의 가독성과 유지보수성을 크게 향상시킬 수 있었습니다. 이 과정을 통해 실제로 코드의 문제점을 사전에 발견하고 수정할 수 있었습니다.
마지막으로 이번 미션을 통해 얻은 경험을 바탕으로 앞으로의 개발에서 TDD와 리팩토링의 중요성을 더욱 신경 써야 할 것 같다고 생각했습니다. 따라서 전체적인 흐름을 이해하고 코드를 작성하는 데 있어 체계적인 접근이 필요하다는 것을 느꼈습니다. 이를 바탕으로 앞으로도 객체 지향 프로그래밍과 TDD를 적극 활용하여 더 나은 코드를 작성하겠습니다.
</aside>