안녕하세요!
벌써 4주차에 접어들었어요
이제 프리코스에 대한 글을 적는 것도 이번이 마지막이 아닐까 하는 생각이 듭니다
좀 더 잘할 수 있었을까? 하는 생각에 아깝기도 하면서
사실 저는 최선을 다했기 때문에! 아주 후회는 하지 않아요
하지만 아쉽기도 하고... 이제 더 이상 메일이 오지 않는다는 생각에 섭섭하기도 하네요
https://github.com/woowacourse-precourse/java-christmas-6
이번 주차 과제는 이러한데요 이번에는 공개 포크 및 PR을 거치는 방식이 아니라
비공개 저장소로 생성하고 collaborator로 초대하는 방식이에요
제가 최근 주말에 잠실을 다녀왔는데 벌써 크리스마스 분위기가 가득이라 좋더라고요
근데 과제도 크리스마스로 나오니까 반갑고 좋은 생각입니다 ㅎㅎ
이번 주에도 역시 월요일부터 시작하게 되었습니다... ㅎㅎ
저번 주차의 결심에 따라 조건부터 상세히 정리하고 플로우 차트 그리려고 합니다
- 과제 저장소 생성하고 콜라보레이터 초대하기
- 조건 파트 작성하기
- 플로우 차트 그리기
- 구현 파트 작성하기
실수한 건 없는지 몇 번이나 더블 체크하고 이번에는 메인 브랜치를 사용해야 한다는 점!
클론까지 완료
제가 조건 파트를 너무 꼼꼼히 분석하는 건지 시간이 많이 걸리는 느낌입니다
최대한 20분 안으로 끝낼 수 있게 노력하는 게 중요할 것 같네요 ㅎㅎ...
그래도 완벽하게 빠진 조건 없이 분석 완료!
조건 파트를 먼저 작성하니 플로우 차트 그리는 게 더 수월할 것 같아요~
플로우를 짜면서 어떤 클래스를 나눌지 고민해 보고
사실 전 이 파트 정리할 때도 진짜 오래 걸립니다
흐름에 따라 적절한 클래스와 필드
어떻게 사용할지 머리로 그리면서 사실상 설계도 완성을 하고
코드 작성 시에는 고민없이 짜둔대로 하면서 어색한 부분은 없는지 체크하고
조립하다 이상한 부분이 있으면 조금씩 수정만 하며 진행하기 때문에!
이 부분에서 머리를 다 쓰고 있어요
초기 시안에서는 DAY 클래스를 따로 안 주었는데
각종 메시지를 던지고 받으려면 꼭 필요할 것 같아서 하나 만들어 주었습니다
이로서 이번에도 getter와 setter 사용을 지양하며 짤 수 있을 것 같아요
- DAY 구현하기
- DayException 구현하기
- DAY 테스트 코드 작성
아자아자 또 코드 짜기 시작합니다
제 설계가 코드로 탄생하는 순간은 늘 설레고 빨리 짜고 싶어요
(마무리도 하고 싶을 수도)
메시지를 주고받기 위해 여러 함수를 작성한 파트입니다!
특별히 어려움은 없었어요
위 항목과 같이 구현하였습니다
중간에 to day exception으로 마무리하는 커밋로그가 그것!
를 테스트 해 보았습니다!
오늘 코드를 잘 마무리하기 위해 찜닭도 시켜먹었고요 (핑계 맞음)
이제 열심히 작성해 보겠습니다!
- MENU 구현하기
- MENU 테스트 코드 작성
- EVENT 구현하기
- EVENT 테스트 코드 작성
- MENU 추가 구현하기
- MENU 추가 테스트 코드 작성
- PLANNER 구현하기
- PlannerException 구현하기
- PLANNER 테스트 코드 작성
- InputView 구현하기
- InputException 구현하기
- OutputView 구현하기
- christmasController 구현하기
코드 작성할 때마다 느끼는 건데 stream은 정말 신이에요
잘 활용하면 훨씬 깔끔하고 간단한 로직으로 구현 가능함...
테스트 진행하다가 잘못 작성한 부분을 발견해서 바로 수정해 주었습니다
하는 함수를 작성해 주었습니다
작성하다 보니 menu에서 추가로 작성해야 되는 함수가 떠올라서
리드미 문서에 추가하고
또 planner에 있던 기능을 여기로 옮겨야 캡슐화가 유지될 것 같아서
해당 부분을 유지하기 위해 옮겨주었습니다!
함수가 상당히 많이 작성되었습니다 ㅎㅎ
각 케이스에 대해서 참 거짓인 경우를 나누어 테스트하였고
뱃지와 예상 결제 금액의 경우 하나씩의 테스트만 진행하였습니다!
테스트 개수가 꽤 많아서 반복 노동처럼 느껴졌던 ㅎㅎ...
event에서 사용하기 위한 함수들을 추가 구현해 주었습니다!
위 함수에 따라 추가 테스트 코드를 작성하였습니다
머리에 담은 설계는 있는데 이걸 어떻게 활용해야 될지 감이 안 와서
한 함수에 쭈욱 담은 뒤에 리팩토링하는 과정을 거쳤습니다
어렵네요... ㅠ
이번 주차 미션은 평소보다 조금 더 복잡해서 그런가
시간이 2배로 걸리는 기분이에요
저녁 전에는 끝날 줄 알았는데 새벽에야 겨우 끝날 것 같... ㅠㅠ
그래도 마지막 불꽃을 태워봐야죠!
테스트 코드를 작성하다가 또 잘못 작성한 함수를 발견했습니다
따봉 테스트 코드야 고맙다
이제 슬슬 끝이 보여서 기쁩니다...
예외 상황들은 패턴을 통해 해결해 주었어요!
우테코 프리코스를 통해 아주 유용하게 쓴 게 stream과 패턴입니다 ㅎㅎ
테스트 코드도 잘 작성하는 버릇이 생긴 것 같아요
드디어! 프린트하는 로직도 다 짰어요~
떨리는 순간입니다... ㅎㅎ
이제 실행해보고 올게요!
수많은 fix 과정을 거쳐서 무사히 개발을 끝냈습니다...!
이제 프리코스가 끝난다니 너무너무 아쉬워요
- 규칙 준수 확인하기
- 깃허브 1차 제출
- 지원서에 2차 제출
먼저 어느덧 4주차가 끝났다는 게 믿기지가 않아서 아쉽고 섭섭한 생각이 큽니다
당장 목요일에 오는 메일을 기다리게 될 것 같다는 생각이 듭니다
4주간 스스로 많이 발전했다는 것을 많이 느끼고는 하는데
마무리를 하며 1주차의 코드부터 다시끔 살펴보았습니다
그때도 일주일간 최선을 다하여 코드를 짰지만
지금 보니 또 부족한 부분이 보여 아쉽기도 하면서
그래도 스스로 떳떳하게 열심히 했다 생각하여 후회는 없습니다
설계에 공을 들이며 더 깔끔한 코드를 짜고자 여러 객체지향적인 코드를 짜고자 노력하였는데
어느정도까지 왔는지는 모르겠지만 적어도 시작전보다는 훨씬 발전했다 자부할 수 있을 것 같습니다
MVC 패턴으로 코드를 짜고 함수를 작은 단위로 나누어 작성하고 테스트 코드를 작성하고
기능 단위로 커밋을 하고 getter setter를 사용하지 않고
(개인적으로 가장 어려운 파트였습니다
설계부터 다시 해야 돼서 몇 번이나 갈아엎었던 것 같습니다
메시지를 주고받는다는 개념을 온전히 이해하기 까지 많은 어려움이 있었던 것 같네요...)
코드를 작성한 후에도 리팩토링을 진행하고...
모든 것들이 도전이었지만 어느덧 조금은 체화된 것 같다는 느낌이 듭니다!
프리코스가 아닌 정식으로 테크코스에 참여하여
더 큰 발전을 도모하고 싶다는 욕심이 커지게 되어
간절한 마음이 배가 된 것 같습니다
설계의 중요성은 알았지만 코드 작성하기 바빠 생략한 적이 많은데
프리코스를 진행한 후 사실 개발자의 기본은 설계가 50%는 되는 것 같다는 생각이 들었습니다
ChatGPT 시대가 오며 단순한 코더들은 살아남기 힘든 세상에서
개발자들의 몫은 설계가 아닐까 더 나은 구조 더 나은 코드 리팩토링이 아닐까 생각을 해 보면서
코드 작성에 바빠 설계에 소홀히했던 스스로를 반성한 시간이기도 했습니다
조건 파트를 꼼꼼히 작성하고 플로우 차트를 그리고
구현 파트에서 클래스, 함수, 필드의 틀을 잡고
퍼즐을 맞추듯 코드를 작성하는 경험이 무척이나 즐거웠습니다!
한달동안 이러한 경험을 하게 해주셔서 감사합니다
앞으로도 더욱 협업하기 원활한 유지보수가 용이한 설계하는 개발자가 되도록 노력하겠습니다