우아한테크코스 프리코스 3주차 회고

khundi·2022년 11월 17일
1
post-thumbnail

📚 3주차 과제 - 로또

🔗 3주차 Pull Request 링크
이번 3주차 과제로 로또가 나왔다. 예전에 경험했던 과제여서 정말 자신 있었다. 하지만 이번에도 nodejs로 실행하여 터미널에서 출력하는 미션 그리고 클래스로 구현하기까지...😭🫠
뭐 어쩌겠습니까? 그래서 안할겁니까? 해야죠...

🔍 요구사항

요구사항은 앞 전의 과제들의 요구사항에 + 클래스를 분리하기, 단위 테스트 작성하기가 있었다. indent depth 3미만으로 작성하기. 한 메서드 한가지 기능만 하도록 작성하기 등등 많은 요구사항이 있었지만 너무 정신없이 기능 구현에만 급급했다...🥺

𝒆𝙣𝗴 영어 커밋 도전

과제 진행 요구 사항 중 커밋 컨벤션 가이드 링크가 있어 찾아보고 나름대로 생각해보고 작성해봤다.
커밋 타입(커밋 대상?): 제목 이라고 생각해봤고 제목으로 전부 내용 전달이 안되면 줄바꿈으로 본문, 푸터까지 작성해볼 수 있다.
영어 실력이 터무니 없이 부족해 계속된 번역기 사용이 포착되었고 영어 공부를 소홀히 하면 안되겠다고 생각되었다. 마지막 즈음에 테스트를 통과하지 못하자 급하게 코드 수정에 들어가고 커밋도 한글로 쓰게 되었다.🫠

❌ 테스트 케이스 실패

마지막 구현까지 완료했지만 주어진 테스트 케이스가 계속 실패했다... 원인을 계속 알아보다 배열을 그대로 출력하다보니 실패했던 것이었다. 터미널에서 보기엔 배열을 그대로 출력해도 문자열로 출력한 것과 같이 보였다. 처음엔 동기적으로 구현한다고 promise를 사용해서 그런가 싶어 모두 콜백함수에 콜백함수를 담는 방식으로 다시 바꾸고... 하다보니 제출기한에 다다라 부랴부랴 제출을 해버렸다.🫠🫠 그저 기능만을 위한 코드를 작성해버리고 말았다.

📝 공통 피드백

비즈니스 로직과 UI 로직을 분리한다

한 클래스에서 비즈니스 로직과 UI 로직을 한 클래스가 담당하지 않도록 한다.
말그대로 한 클래스에 로또 숫자를 만드는 로직, 터미널에 출력을 하는 로직이 있으면 안된다는 의미인 것 같다. 이게 MVC패턴 뭐 그런건가요?

객체의 상태 접근을 제한한다

필드는 private class 필드로 구현한다.
private class로 구현하게 되면 캡슐화되어 외부에서 직접 접근할 수 없어 setter와 getter로 조회, 수정하도록 구현할 수 있다. private class 필드로 구현하면 개발자의 실수를 줄일 수 있을 것이다.

성공하는 케이스(해피 케이스) 뿐만 아니라 예외에 대한 케이스(엣지 케이스)도 테스트하라

테스트 코드도 코드다

이 부분은 놓쳤던 부분이다. 본 기능 구현 코드에만 중복을 줄이고 재사용성을 고민했는데 테스트 코드도 똑같이 생각해야한다는 것.
new Lotto,new Lotto,new Lotto,new Lotto,new Lotto,....

✍️ 프리코스 3주차 마무리하면서...

3주차에도 여러 시도들을 해보았다. 영어 커밋, 메서드별 테스트 케이스 작성... 일주일 동안 머리 싸매며 코드 작성을 했지만 마지막에 테스트 케이스 통과에 급급한 결과는 영 맘에 들지 못하다. 이번 4주차 미션은 부지런하게 제출기한에 쫓기지 않고 과제를 진행해봐야겠다...

profile
안녕하세요. 웹 프론트엔드 개발자 전성훈입니다.

2개의 댓글

comment-user-thumbnail
2022년 11월 18일

회고 잘 보고 갑니다. 공감가는 내용이 많아서 재미있었어요 ㅎㅎ

1개의 답글