PR링크 : https://github.com/woowacourse-precourse/javascript-baseball-6/pull/32
미션링크: https://github.com/woowacourse-precourse/javascript-baseball-6
이번 미션은 주석보단 코드로 다른 사람이 이해하기 쉽도록 구현하는 것이 가장 큰 목표였다. 특히 변수명, 함수명을 대충 네이밍하는 것 대신, 실제로 변수가 하는 역할과 함수가 하는 역할에 대해 명확한 이름을 부여하는 것이 핵심이였다. 또한 함수는 하나의 기능만을 수행하도록 해서 클린코드를 작성하는 것이 목표였다.
단순히 App.js에다 모든 로직을 작성하는 것 보다 MVC패턴을 적용해서 모듈화를 하면 유지보수 측면에서 좋다고 생각했다.
Model에서는 핵심 로직만을 구현하려고 노력하였고
View에서는 입력 로직, 출력 로직, 입력 유효성 검사 로직만 기능을 가지도록 구현하였다.
Controller부분에는 Model과 View를 이어주는 인터페이스 역할만 하도록 구현하였다.
이러한 패턴 적용을 이번 과제에 적용해보니 프로그램을 보다 구조화되고 관리하기 쉽게 될 수 있었다.
ApplicationTest.js에서 예외 테스트도 검사한다.
하지만 이외에도 예외는 존재했고 예외를 테스트하기 위해서 ApplicationTest.js 이외에 test파일을 만들었다.
inputValueTest.js파일에서 입력값 유효성 검사를 해서 발생하는 에러메시지가 정확한지 확인을 했다.
TurnOverMessagaeTest.js파일에서 스트라이크, 볼, 낫싱에 대한 로직이 정확한지 확인을 했다.
요구사항 중에서 airbnb js 컨벤션으로 코드를 작성하는 것이 있었다.
그래서 airbnb 컨벤션을 내 기준으로 정리할 필요가 있었다.
나의 airbnb 컨벤션 정리
이번 미션에서 주로 적용했던 것은 고차함수이다.
JS 코드 컨벤션 중 한 가지만 export하는 모듈에서는 이름 붙여진 export보다는 default export를 사용을 지향하는 것으로 알고 있는데 export {InputView}를 한 것에 대해서 지적을 해주셨다. 딱히 신경쓰지 않은 부분이였는데 이번 기회로 더 신경써야 겠다.
if(Number(num) < 1 || Number(num) > 9) 해당 조건문은 num === 0를 묻는 것과 동일하다고 여겨지는데 checkZero로 바꾸는 것은 좋을 것 같다는 지적을 받았다. 또한 1, 9도 상수처리 하는 것이 좋을 것 같다는 지적을 받았다.
이번 기회로 상수처리와 더욱 깔끔히 작성하도록 노력해야겠다.