[ 코드숨 ] 5주차 회고록
dal-lab.com/2019/09/18/today-i-learned/
오늘 나는 무엇을 배웠나?
오늘 나는 무엇을 배웠나? 2019년 9월 18일 - 아샬 초기 스타트업을 위한 컨설팅 업체인 thoughtbot이란 곳이 있습니다. Ruby on Rails가 유행하던 시절에 여러 기술을 공유해서 유명한 곳이죠. Active Storage
dal-lab.com
회고를 쓰기 앞서서, TIL ( Today I Leaned)에 대한 내용, 특히 Three FS를 활용하는 방법을 이해해야 합니다.
위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다.
* 내맘대로 서론
어느새 5주차를 마무리합니다. 먼저, 친히 저에게 도움을 양승인님 감사합니다 :)
사소해보이지만 반대로 귀찮을 수 있는것을 친절하게 알려주셔서 감사합니다. 저도 제가 알고 있는 부분을 다른사람들에게 나눌 수 있는 기회들을 잘 활용하겠다고 생각하는 계기가 됩니다 ㅎㅎ
1. Facts(사실, 객관)
- 고양이 장난감 Rest API 유효성 추가
- 사용자에 대한 Rest API 작성 및 유효성 검사
- Dto 사용 이유와 Dto를 통해 생성, 수정 service 작성하기
- Dto를 Dozer로 대체하기
- lombok에 대한 주의사항, 변수에 어노테이션을 통해 조건설정
- ControllerAdvice를 통해 예외처리
- JavaDoc 주석달기
- 테스트 작성 시, 추상화시켜서 설명문 작성하기
2. Feelings(느낌, 주관)
1. 테스트코드의 낯설음도 반복하면 익숙해진다.
어느덧 테스트코드를 이용한지 3주차 입니다. 처음에는 내가 어떤 방식을 사용하는지, 지금 쓰는 라이브러리들이 어떤 배경과 기능들이 있는지 잘 몰랐습니다. 또한 테스트코드를 작성하고 코드를 작성하라는 것이 굉장히 불편했습니다. 하지만 주차를 지나면서 계속 만들어보고, 같은 것도 쳐다보면서 해보니 점점 손에 익습니다.
2. 수학문제 풀듯이 정답을 애쓰지 말자
코드를 짜면서 다양한 상황에 부딪힙니다. 이번 과제에서 어떤 방식으로 주석을 달아야 하는가, 예외처리는 어디 Layer에서 하는가, 예외 메세지는 어느수준으로 작성할 것인가에 대한 궁금증이 생겼습니다. 제가 호기심이 많고, 가끔은 너무 세세한 것에 관심이 많아 이것저것 질문을 했는데 결론은 명확한 정답은 없다는 것이었습니다. 즉, 팀 컨벤션에 따라 다를 수 있다는 것이었습니다. 수학문제처럼 딱 떨어지는 정답을 찾는 것이 아닌, 좀 더 개발자가 협업하기 쉬운 주석과 리뷰를, 유지보수하기 좋은 설계를, 사용자가 편하게 이용할 수 있는 기능을 생각해야겠습니다.
3. '왜', 'why'에 대해 계속 생각하고 접근하자
어떤 기술을 사용하는 것은 나름의 이유가 있습니다. 중요한 기술을 정확히 알고 사용하는 것도 중요하지만, 왜 그렇게 사용하는지에 대한 이해도 중요하다고 느낍니다. DTO와 Dozer, 유효성에 대한 이번 주 공부는 저번주에 이어서 더욱 견고한 코드 작성에 한 걸음을 더했습니다. 또한 리뷰를 받을 때, 최대한 스스로 찾아서 결론에 도달 할 수 있도록 도와주십니다. 질문을 통해 나의 생각이 어디가 잘못되었고 어느 것이 맞았는지 돌아볼 수 있어서 좋습니다. 이렇게 한단계 한단계 현업분들의 경험을 알아가는 것은 큰 배움입니다.
3. Findings (배운 점)
- 이번 주 처음으로 코드에 주석을 달며 더욱 협업에 대한 중요성을 느꼈습니다.
새로운 부분이었기 때문에 굉장히 저항성이 컸습니다. 하지만, 한번 연습으로 써보고, 다음 시간에 다시 켜서 돌아보고, 또 다음 번에 가다듬으면서 생각보다 할만하다고 느꼈습니다. 이전에 테스트코드 설명문을 작성하면서, 많이 교정을 받았던 것이 큰 도움이 됐습니다. ㅎㅎ 주석까지 달아보면서 이제는 '다른 프로그래머들이 봤을 때, 과연 나의 코드를 잘 이해할 수 있을까?' 라는 생각을 가지고 작성하게 됩니다. 코딩은 마치 혼자서 엄청나게 노트북을 두드리는 일 같지만, 사실은 이 모든 것이 서로 원할하게 의사소통하고 협업하기 위해 잘 정리해야 된다는 것을 실감하고 있습니다.
- Dto의 처리, 또한 Dozer에 대해 이해했습니다.
이번과제에서 Dto는 Entity를 그대로 유지하기 위해서 사용하는 방법이었습니다. 또한 Dozer를 사용하는 것은, 각 Layer로 이동하는 객체들을 보다 편하게 관리하기 위해서 사용합니다. Dozer를 그냥 사용하고 끝내는 것이 아니라, 왜 그런지 쭉 살펴보면서 발전의 역사와 방법을 하나 알아갑니다. 다음과제에서는 모든 처리부분을 Dto로 해볼려고 합니다.
- Valid를 통한 유효성 처리에 대해 배웠습니다.
4주차에 혼자서 유효성에 대해 처리는 어떻게 하지?라고 생각했는데 이번주에 @Valid와 함께 등장했습니다. 유효성에 따른 예외 처리를 어디서 어떻게 해야하는지 고민이 들었습니다. 종립님께서는 Controller, Service 모두 가능하며, 보통 예외가 발생한 곳에서 잘 처리한다고 하셨습니다. 이번에는 주어지는 객체들에 대한 유효성 처리였는데, 앞으로 저도 해당 서비스의 역할에 따라서 어떻게 처리를 해야하는지 다양한 상황을 맞이하면서 확인하면 좋을 것 같습니다.
4. 자기 선언(Affirmation)
- 좀 더 세세하게 단위를 쪼개고 일정을 관리하려고 합니다. 아무래도 예상치 못한 부분에서 발목이 잡히면, 한없이 시간이 끌려서 늘어지는 경우들이 많습니다. 이제 애초에 과제를 시작할 때, 나에게 주어진 시간과 해야 할 일들을 정리하고 스스로 더 꼼꼼히 피드백하여 관리하면 본질에 집중할 수 있을 것 같습니다.
- 건강한 정신으로 코딩하기 위해 건강한 몸도 생각하고 움직이겠습니다! 매일 자기 전에 20분 정도 뛸 계획을 가지고 있습니다. 축구를 너무 좋아하는데, 코로나라 아무래도 쉽지가 않네요 ㅠㅠ