[회고록] 우아한테크 프리코스 회고록2-3
2주 차는 더 열심히 하고 싶었지만 조금 아쉬웠습니다.
주로 했던 생각은 아래와 같습니다! 3주 차 문제가 어려운 것 같아 간단하게만 정리합니다
https://github.com/woowacourse-precourse/java-racingcar-6/pull/751
구현단계에서 많은 문제에 직면했고 코드 리뷰와 저의 판단을 통해 3주 차 미션에 도입해야겠다고 생각했습니다. 주로 했던 고민은 아래와 같습니다.
- MVC 패턴을 적용하면서 컨트롤러에 Loop 문이 발생하는 문제
비즈니스 로직 혼입되어 있습니다. Controller 내부에 Loop 문이 있는 경우, 그 내부에서 특정 로직이 수행되고 있다는 것을 의미합니다. 다음 3주 차에 Controller를 더욱 간결하게 만들어야겠다고 생각했습니다.
- InputView에서 유효성 검사를 해도 되는가?
View는 주로 사용자와의 상호작용 및 화면 표시에 집중하고, 입력을 컨트롤러에 전달하여 비즈니스 로직을 처리하게 하는 것이 MVC 패턴을 준수하는 방법입니다. 데이터 가공 및 유효성 검사와 같은 비즈니스 로직은 주로 Controller 또는 Model에서 처리해야 합니다. 우테코라는 연습의 장에서 사용해 보고 코드 리뷰를 받아봐야겠다고 생각했습니다.
- inputView와 outputView를 어느 시점에서 주입해 줄 것이냐?
컨트롤러와 Main 둘 중 어느 곳에서 주입할까고민한 결과 “프로그램 실행의 시작점은 Application의 main()이다.”라는 요구사항을 생각하여 Main에 주입하였습니다.
- View의 출력을 private final String 으로 관리하는 문제
Contents Class로 상수관리를 하는 방법도 생각해 보았습니다. 가독성 향상과, 유지보수에 용이하고 재사용이 가능하다고 생각했지만 이번 과제의 상수가 비교적 적고 과도한 분리가 아닐까 하는 우려에 Contents Class로 따로 관리하지 않았습니다.
- 테스트코드를 고려하지 않고 코드를 작성하여 이후 본 코드가 변경되는 경우
Test를 직접 만들어보는 것이 처음이라 Test를 아예 생각하지 않고 코드를 구현했습니다. 때문에 코드의 어떤 부분을 변경해도 안전한지, 어떤 부분이 위험한지 판단하기 어려웠습니다. 테스트 코드는 코드의 안정성을 보장하고, 리팩토링이나 기능 추가를 안전하게 진행할 수 있도록 도와주는 중요한 기능을 하기에 테스트 코드의 중요성을 무시하고 코드를 작성한 것은 큰 실수였다고 생각합니다. 앞으로는 테스트 주도 개발(TDD)과 같은 방법론을 적극 활용하여 안정성 있는 코드 개발을 추구해야겠다 생각했습니다.
이외에도 인터페이스나 느슨한 의존관계, 다른 좋은 부분들도 적극 수용하고 공부하여 다음 3주 차에 도입해야겠다고 생각하고 있습니다.
감사합니다 모두 파이팅~!