지금 보면, 항상 셀프 리뷰의 내용은 비슷한듯?? 싶다
이 문제에서 나름 고민을 많이 했던 기억이 있는데, 최종 코드 보면 그래도 그 고민이 녹아있는 것 같아서 (내 생각일 수도 ^____^..) 뿌듯하기도 허다아 :)
아쉬운 부분은 커밋 로그!
이 부분을 중점으로 리팩토링 해봐야겠다.
그리고 당시 구현할 때, 뒤늦게 예외를 발견해서 많이 헤맸던 기억이 있는데 테스트 코드를 작성하는 방법을 익혔기 때문에!
테스트 코드를 기반으로 예외를 최대한 커버하도록 구현해보고자한다.
[ 기능 정의 ]
- [ ] 사용자 아이디 user 입력 받기
- [ ] 친구 관계 정보 friends 입력 받기
- [ ] 방문 기록 visitors 입력 받기
- [ ] 각 사용자들의 user와 함께 아는 친구의 수 구하기
- [ ] user 타임라인에 방문한 친구 구하기
- [ ] 해당 친구가 몇 번 방문했는지 구하기
- [ ] 각 친구의 점수 구하기
- [ ] 추천 점수 높은 순으로 최대 다섯 명 뽑기
- [ ] 이름순으로 정렬해서 return하기
[ 예외 ]
- [ ] 사용자 아이디 user 길이가 1 미만 30 초과인 경우
- [ ] 사용자 아이디 user가 알파벳 소문자로만 구성되어있지 않은 경우
- [ ] 친구 관계 정보 friends 의 개수가 1 미만 10,000 초과인경우
- [ ] friends의 각 원소가 길이가 2인 리스트가 아닌 경우
아~ ~ 힘들었다😂
기존에 주어지던 user, friends, vistors를 밖에서 받아오게 해주고, 그 값을 하나하나 다 검증해야했기 때문에 이 과정에서 시간이 정말 많이 걸렸다.
전체 User를 확인하면서 각 점수를 구해야하기 때문에, User를 저장하고 있는 컬렉션이 필요했고
이를 스프링과 동일하게 Repository
로 구현하자 싶어서 Repository
를 도입하게 되었고
최대한 기존 값을 변경하지 않도록 만들면서.. 그러면서도 내가 찾는 값이 그대로 반환되게 구현하기 위해 진짜 꽤나 공을 들였다. (완벽하진 않다 ㅠ 지금은 진짜 너무 힘을 쏟아서 머리가 안돌아가니까 부족한 부분 정리를 좀 해야겠다.)
기존 MVC 구조에서 -> MVCS 까지 구현하는 습관을 들였는데 -> 이젠 Repository도 도입했음에..
그게 잘 짜여진 코드인지 여부는 막론하고 일단 칭찬을 해주고 싶다😂
혼자서라도 Spring Boot 열심히 공부한 보람이 조금 있는 것 같다 흑흑
그래도 처음 도입하는 구조인만큼 어려운 점이 많았으니까 이제 다음 미션 연습할 때 더 확실히 도입해보도록 노력해야겠다.
일단 내가 갖고 가고자 하는 구조는
domain 안에 모델 넣고 레포지토리 넣기!!
함 해봐야지..
못할게 뭐있나!
기존 IllegalArgumentException의 메세지는 모두 "[ERROR]"로 시작되게 구현했는데,
생각해보니까 outputView에 에러메세지 출력 로직을 구현한만큼 해당 "[ERROR]"를 outputView 프린트 함수에서만 사용하면 되지 않나???는 생각이 문득 들었다.
그 생각에 따라 구현을 완료하니까 (조금이나마) 코드가 줄어든 느낌 !
나름 만족스럽다 :)
구현하면서 정말 고민이 많았는데 정신없이 구현하고나니까 이제 생각할 힘도 없어지는 것 같다 🙂..
그래도 몰입하고 그 결과로서 돌아가는 코드를 보는 것이 가장 기분 좋기는 하다 으하하
구조는 잡았으니까 더 나은 코드를 위해 더 노력해봐야지으아아
고민을 하고 찾아가면서 구현하는 것에는 자신이 있지만, 그 과정을 제한시간안에ㅠㅠ 하는 것은 아직 무섭기 때문에 나 혼자서라도 우선순위를 좀 정해야겠다.
하는게 맞을 것 같다
아아어ㅏ아아앙
어렵다!
근데 잘하고 싶다
😥😥
내 고민의 과정을 함께하고, 그 안에서 더 다양한 의견을 받으며 딥하게 몰입하고 성장하고 싶다
아아아