폭풍의 2주차가 마무리되었다! 158개의 PR 리뷰를 정리하며🥹, 동시에 2주차 미션을 진행하는 1주일 동안 정말 많은 일이 있었던 기분인데, 이번주 나는 어떤 생각을 하며 미션을 수행했는지 돌아보려고한다!
미션을 하면서의 구체적인 고민 과정과 땅끝까지 파고들어 공부한 내용은 여기를 봐주시길!
(주의) 이번주 좀 많습니다..🚨
내 답글을 포함하더라도 무려 158개나 코멘트가 달린 나의 1주차 PR 리뷰!
리뷰 남겨주신 리뷰어분들 정말이지 한 분 한 분 나의 선생님들.... 절 받으세요...🙇♀️🙇♀️
단순히 피드백을 받아서 좋았다
가 아니었던 것이 포인트!
- 내가 그렇게 코드를 짠 이유를 비로소 생각해보게 된다.
그동안 스스로에게 질문을 던져보지 않았던 것 같다.
왜 나는 여기에 정적 메소드 팩토리를 썼는가? 왜 상수화를 했는가?
리뷰어분들이 던지는 질문을 통해, 이런 같은 질문들을 처음으로 스스로에게 던져보고 고민해보게 되었던 것 같다.
- 기계적으로 쓰지 않고 정확히 알고 쓰는 자세 GET!
기계적으로 생성자 주입을 하는 것과,
의존성 주입의 이유, 생성자 주입에 대해 정확히 알고 넣는 것은 겉보기에는 같아 보이지만 매우 다르다.
리뷰를 통해 내가 기계적으로 하고 있던 작업들을 인식하게 되어, 찾아보게 되는 계기가 될 수 있었다!
초반에는 미션을 먼저 구현해야하나 리뷰를 먼저 살펴봐야하나 고민이 있었지만, 리뷰를 먼저 천천히 읽어보았고 돌아보니 그러길 정말 잘했다는 생각이 든다!😁
그동안 잘 모른채로 넘어가고 그냥 써왔던 것들을 더 이상 넘어갈 수 없게, 쉽게 말해 까발려지게(?) 되어 혼자 공부한 1주일과 비교가 안되는 양의 배움을 얻은 느낌이다💰💰
저번주는 기능구현 → 몰아서 테스트, 이런식으로 한 경우도 많았는데 이번주는 최대한 TDD를 지키면서 구현해보려고 했다. 그랬더니 좋은점...불안감이 줄어들었다!
이전에는 빠르게 메소드들을 만들어나가면서도 이걸 다 구현해놓고 안 돌아가면 어쩌지? 라는 생각이 완성할 때까지 계속 들었던 것 같은데,
- TDD로 구현하면서 속도는 좀 느리더라도 하나 하나 메소드에 확신을 가지면서 구현하고 있다는 느낌이 들었고
- 작은 단위로 테스트 가능하게 메소드들을 만들어놓았기 때문에 추후에 수정사항이 생겼을 때도 두려워 하지 않고 쉽게 수정할 수 있었던 것도 기억에 남는다!
그렇게 TDD로 메인 로직을 모두 구현하고 테스트가 다 통과한 것을 확인했을 때의 짜릿함이란!⚡️⚡️
내 머리를 100번 쓰다듬어 주고 싶을만큼 뿌듯했다🫳🫳
1주차 때 객체 별로 책임을 나름 분리한다고 해봤지만 리뷰 때 보니 분리가 완벽히 안 된 부분이 많았다.
컨트롤러
나 View
로 전달되는 객체 등이 대표적으로 그랬기에 이번에는 야심차게 분리해보았다!
컨트롤러
가 중개 이상의 책임을 갖는 것을 피하기 위해 컨트롤러를 구현하지 않고 도메인에 필요한 메소드를 모두 구현한 후 컨트롤러를 연결하거나,
View
에 전달하기 위한 용도의 DTO
를 적극적으로 활용해본 것이 그 노력의 예시라고 할 수 있을 것 같다!
1주차, 성능에 대한 리뷰를 정말 많이 받았다.
하지만 그동안의 나는, 가독성, 클린코드, 객체지향을 지키는 것에 급급했기 때문에 성능에 대해서 평소에 안찾아본 편이었다고 할 수 있다.
그렇게, 새롭게 맞닥뜨리게 된 성능에 대한 고민!
리뷰에 있는 성능에 대한 질문에 대해 답변하기 위해, 리뷰어분들이 쓰신 단어 하나한 찾아보면서 고민을 해보게되었던 것 같다.
여기에 대해 생각해본지 얼마되지 않았기 때문에 아직 모르는 게 많지만,
프로그램을 바라보는 기준에 성능
이라는 새로운 전등이 켜진 것 같아 새롭다💡
그동안은 기능 구현에 급급했다면 티가 안나는 하지만 유의미한 부분들에도 신경을 써보고 싶었다.
final
를 여기 저기 적용해보고, unmodifaibleList
에 대해 알아보고 써보는 등 이것 저것 시도해본 이번주 미션이라고 할 수 있는데,
과연 리뷰 때 어떤 더 많은 배움을 얻을 수 있을지 기대된다!😋😋
이번주에는 저번주에 목표했던, 고수들의 토론의 장으로 보이는 함께-공유해요에 내가 공부한 내용을 올려보려고 했다.📝
평소에는 생성자 주입이 뭐지?
하고 검색한 뒤 아~ 대충 이런거구나~
하고 다시 다음 코드를 치기 바빴다면
이번주는 이 과정을 정권지르기 하듯 반복했다..!
생성자 주입이 뭐지?
생각이 들면 찾아본다. 의존성 주입
, DIP
같은 용어들도 함께 모른다는 것을 발견한다. 코드에 적용
해 포스팅으로 정리한다. 궁금증
이 드는 점도 모두 기록한다.궁금증 해결 과정
까지 담아 포스팅을 완성한다.물론 글로 정리하는데 많은 시간이 걸린다🥲
하지만, 이번 프리코스에서는 궁금한 것에 대해 끝까지 파고들어 내 것으로 만들고자 하는 경험을 하고싶었기에 기꺼이 시간을 투자했다!
솔직히 빨리 넘어가서 닥친 코드를 짜고 싶다는 생각도 들었다..!
하지만, 정리하는 과정을 통해
1. 앞으로는 완벽히 알고 코드를 치는 지식에 대한 불확실성이 줄어든 상태가 되었다는 것
2. 이번에 찾아봄으로써 다음에 또 까먹고 검색하고 하는 과정을 반복하지 않을 것이라는 중요한 배움을 얻었다!
커뮤니티의 참가들과 토론을 하면서 움직인 게 있다면 2가지다. 1. 작성한 포스팅 그리고 2. 나!
일례로, 의존성 주입 글을 쓸 때 필드 주입 방식에 대해 의문이 남아있었다.
그 상태로 글을 완성하고 넘어갔는데 함께-공유해요 방에 글을 올리니 해당 부분에 대한 질문이 아니나 다를까 바로 올라왔다. 딱 걸린 느낌이랄까...!😂😂
덕분에 이야기 나눠보며 이해가 부족했던 부분에 대해 포스팅을 보완하고 나도 완벽히 이해하는 경험을 하게되었다.
이런 일이 계속해서 일어나면서 느끼게 된 것!
공유는 다른 사람들과의 대화는 내 지식의 틈을 메워주는 접착제 같은 일을 하는 구나🧪
이번주 개인적으로 아쉽게 느꼈던 커밋 메시지를 의미있게 작성하는 것을 다음주에는 꼭 반영하겠다고 다짐했다.
3주차에도 피드백을 스펀지처럼 쑥쑥 흡수하는 내가 되길!
내 코드에 달릴 리뷰들이 기대되는 밤이다🌙⭐️🌃
StringBuilder 에 관한 포스팅을 공유해주셔서 왔다가 회고록까지 읽게 되었네요! 잘 읽었습니다! ㅎㅎ