[코드숨] 4주차 회고록
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를 활용하는 방법을 이해해야 합니다.
위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다.
* 내맘대로 서론
늦은 인사를 올리지만 모두 명절 잘 보내셨나요 : )
여러모로 한주 간의 휴식을 달콤하게 보냈습니다. ㅎㅎ 그렇게 다시 맞이한 이번 일주일은 나름 치열했네요.
치열한 만큼 저의 체력고갈 또한 빠르게 진행되었습니다. 그러다보니 최선의 상태에서 집중이 힘들었습니다
정말 체력관리 안하면 코딩 실력이 아니라 뱃살과 잠만 늘어나겠네요
과제를 하면서 부족한 부분에 대해 좀 더 살펴보면 정말 공부가 끝이 없는 느낌입니다.
아직 잘 아는게 없어 하나하나가 배워가고 있으니 정말 지루할 틈이 없습니다(?)
과제에서 테스트 시 등장한 Optional에 대해 보고 그것은 stream으로 이어지고
내가 쓰는 테스트 라이브러리에 대해 공부하면서 AssertJ, Hamcrest의 차이를 들여다보게되고
LomBok에 대해 보다보니 어떻게 사용해야하는지 유의점도 살펴보게 되고 빈틈을 슉슉 채워가고 있습니다.
코드 과제는 과제대로 열심히 작성하고, 그 중에 필요한 기술들과 방법들이 있다면 그때그때 하나씩 차곡차곡 쌓아야겠습니다. 이미 앞 길을 걸어간 선배님들의 주옥같은 글들이 많이 있으므로 잘 활용하도록 노력합니다!
1. Facts(사실, 객관)
- 고양이 장난감 Rest API 작성
- JPA Repository 추가
- Clean Architecture 구조와 프로젝트에서 적용되는 사항 확인
- Optional의 올바른 사용법 작성
- AllArgsConstructor의 문제점과 대안 작성
- Hamcrest, AssertJ 간단한 비교 작성
2. Feelings(느낌, 주관)
1. 바로 코드구현을 하지 않고 테스트코드를 만들면서 안정감과 신뢰가 생겼습니다.
물론, 그 테스트가 코드를 검증하기에 충분히 잘 만들어졌다는 전제하에 입니다. 테스트 코드의 단언을 작성하면서, 내가 진짜 원하는 기능들과 핵심이 무엇인지 좀 더 명확하게 파악됩니다. CRUD를 넘어서 다양한 요구상황을 연습하면 더욱 빛을 발할 것 같습니다. 또한, 테스트를 먼저 작성하는게 어느수준까지 작성하고 실제 코드를 작성하는지 애매했는데, 좀 더 자리를 잡아가고 있습니다.
2. 과연 나의 테스트가 변화에 유연하게 대처할 수 있는지, 다른사람들이 쉽게 이해할 수 있는지 고민합니다.
테스트의 설명이 너무 함축적이라서 오해할 여지가 없는지, 너무 구체적이여서 불필요하게 반복적인 내용이 가독성을 헤치는지 돌아봅니다. 양쪽 경우에 대해 모두 피드백 받으면서 담백하게 정리하는 방법을 좀 더 배우고 있습니다.
3. Findings (배운 점)
1. Clean Architecture를 잘 아는 만큼 좋은 설계를 할 수 있습니다.
제어의 흐름은 저수준에서 고수준 방향으로 가며, 구체적인 구현체 참조는 피해야 합니다. 즉, Entity와 Repository에 대한 직접적인 접근은 최대한 자제해야 합니다. Entity의 직접적 접근에 따른 수정을 예방하기 위해 Dto를 사용하며, Service에서 우리가 직접적으로 Repository를 주입하지 않고 interface를 이용하면 의존성 역전현상을 막을 수 있습니다. 이제 Service는 DB의 변경에 영향을 받지 않습니다.
2. 테스트 설명은 구체적인 내용을 담지 않고 적절하게 추상화를 시킨다.
구체적인 예외에 대한 내용, 매개변수명은 드러내지 않습니다. 혹시나 해당 부분이 변경되면 필수적으로 해당하는 수많은 내용을 수정해야합니다. 따라서 "예외가 발생한다" , "name이 주어진다면" 등의 구체적인 표현은 피합니다.
3. 조회 작업은 모든 변수의 내용을 증명할 필요가 없으며, 식별자인 id만 비교해도 충분하다
조회 시에, 장난감 고양이 객체의 모든 변수를 단언문으로 확인했습니다. 하지만, id가 식별자이기 때문에 굳이 모든 변수를 확인하지 않아도 id만 이용하면 충분합니다.
4. 자기 선언(Affirmation)
- 이번 주에는 상대적으로 시간이 좀 더 주어졌음에도 생각보다는 개인적 기대보다는 많은 것을 하지 못했습니다. 짧은 시간이 주어졌을 때 정말 효율을 위해 바로바로 집중해서 결과물을 냈다면, 오히려 시간이 길어졌기 때문에 더 느슨해졌는지 생각해봅니다. (물론 관심사에 대한 정보를 더 찾고 글을 쓸 수 있는 시간이 있었던 것은 확실합니다.) 아마도, 내가 어떤 것을 해야 하는지에 대한 정확한 ToDo 리스트가 부정확 했다고 생각합니다. 좀 더 구체적인으로 내가 해야할 것이 무엇인지 알고 짧은 주기로 계속 확인하면서 시간을 효율적으로 사용해야 겠습니다.
- 리뷰를 받았으면 바로 확인하고 수정하는 습관을 들이도록 했는데 더욱 빠른 피드백 자세를 가지겠습니다. 항상 내가 계획한 것을 추가적으로 작성하고 리뷰를 보려고 했기 때문에, 리뷰에 대해서 생각할 시간이 부족했습니다. 그래서, 이제는 즉각즉각 피드백을 통해서 수정하고 제 프로젝트의 방향을 수정하도록 하겠습니다. 상황에 따라 한줄의 리뷰라도 새로운 내용과 얻어갈 부분이 많습니다.
- 시니어 개발자의 좋은 글들을 유심히 보려고 합니다. 유명한 책들의 내용도 너무 좋지만, 이분들의 실전 경험 또한 많은 도움이 됩니다.
5. 마무리... 회사생활과의 병행
운좋게 몇번의 재택으로 조금 더 개인적인 시간을 가질 수 있었습니다. 가장 운이 좋은 것은 코로나로 인해 연수가 없다는 것입니다. 사람을 만나는 것을 좋아하지만, 3박 4일 자리를 비우는것은 굉장히 부담이 됐을 것입니다.