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를 활용하는 방법을 이해해야 합니다.
위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다.
* 내맘대로 서론
이번주 npm run dev가 제대로 안될 뿐 만 아니라 marko.js로 너무 속이 뒤집혀 암에 걸려있었습니다... ㅠㅠ
(심지어 과제 풀이 시간보다 이거 2개 검색한 시간이 더 많습니다 ^^)
wsl에 별짓 다하고 npm 별짓을 다해도 제 손만 타면 제대로 쉽게 되는게 없네요..ㅠㅠ
또 marko.js는 뭐야...??? 너무 어렵게 생각했던 탓인가,,, 이 친구덕분에 구글링 능력이 +10정도 상승했습니다.
(DOM을 어떻게 조작할지 몰라서 헤맸습니다. 심지어 marko.js의 V-DOM까지 고려했으나, 너무 오바하는 것 같아서 일반 js문법으로 만드니 쉽게 만들어지네요!)
그렇게 찜찜하게 마치며... 회고를 쓰기 이전에 과제 영상을 봤는데 암이 치료가 되었네요~!
왜냐하면 아샬님께서 올려주신 spring 과제의 방식과 저의 방식이 굉장히 유사했습니다. 제 자랑이 아니라, 단지 의도하신 대로 진행한 것이 뿌듯했습니다. orElseThrow를 통해 예외를 유도하고.. ControllerAdvice에 넘기며 Exception에서 만든 TaskNotFoundException 이름이 같다던가, ResponseError를 고려했던 것이 별건 아니지만 공감이 갔습니다. 왜냐하면 1주차 때는 너무 초라했던 저의 코드였기 때문에 기분이 좋아졌네요 ㅎㅎ 이렇게 쓰니 별거 없네요. 그냥 그렇다구요 ㅎㅎ
1. Facts(사실, 객관)
- CORS를 통해 front-back의 데이터 사용을 가능하게 한다.
- Spring을 통해 ToDo REST API 만들기는 너무나 간편하다.
- '자바와 JUnit을 활용한 실용주의 단위 테스트' 1독!
- Exception에 대해 문서와 책을 읽으면서 좀 더 명확한 개념과 사용에 대해 알게 되었다.
- Optional은 확실히 관리할 수 있을 때 사용하도록 한다.
- 오류에 관한 처리는 AdviceController에서 해주자.
- SRP(단일책임원칙)을 지켜서 각각의 class들이 자신의 역할에 충실할 수 있도록 한다.
- 매직 리터럴,명령-질의 분리 등 안전하고 효율적인 코드작성 규칙들이 있다.
- 함수 Signature만 봐도 함수의 역할이 보여야 한다.
2. Feelings(느낌, 주관)
진짜 Spring framework는 신세계입니다! 1주차 과제를 통해서 더욱 여실히 느꼈습니다.
ObjectMapper의 read가 json으로 변환하는 것인지, write가 json으로 변환하는 것인지 고민 끝.
HttpStatus도 일일이 만들어서 return했던 것도 이제 안녕.
모두 spring의 annotation과 함께라면 이렇게 편할수가 없네요
@Service, @Repository, @ControllerAdvice, @ResponseStatus
단일책임 원칙, 매직 리터럴, 명령-질의 분리에 대한 내용을 통해 얼마나 코드를 잘 설계하고 안전하게 짜려고 많은 노력이 있는지 알 수 있었습니다. 이름을 듣고 어렵게 생각했는데 원리는 간단했습니다. 이것이 등장한 것은 그만한 이유가 있다고 생각합니다. 기회가 될 때 사용해보면 좋을 것 같습니다.
앞으로 코드를 작성할 때, 그렇게 짰던 이유에 대해 명확한 근거를 찾아보도록 하겠습니다. 세상에 한가지 방법만이 존재한다고 생각하지 않습니다. 각자의 생각이 있을 것이고, 서로 그 생각을 공유하고 비교할 때 더 나은 성장이 있을 것입니다.
3. Findings (배운 점)
Optional에 대해서 주의 깊게 사용하자. Signature를 보기만해도 코드가 파악이 되어야 한다는 것에 비추어 나의 코드가 어떤 오류를 내포하고 있는지 제대로 처리를 해주어야 한다. stream을 이용하여 Optional이 발생할 수 있는 상황이라면, 이것에 대한 처리가 필요하다. 따라서, stream을 사용한 직후에 바로 orElsetThrow을 통해 null을 처리하도록 했기 때문에 반환은 Optional<Task>가 아닌 Task를 할 수 있었습니다.
4. 자기 선언(Affirmation)
코드의 Signature에 따라서 더 명확하게 의미를 드러낼 수 있도록 노력하겠습니다.,
다음주부터는 드디어 Test에 대해 진행이 됩니다. 관련된 도서를 읽어보는 중입니다. 읽었던 내용의 원칙에 맞게 직접 해보면서 잘 익혀보도록 하겠습니다.
- 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
- 중복을 제거한다.
이 2가지가 엄청나게 많은 내용을 함축하고 있다고 느껴집니다. 계속 머리를 굴려가면서 공부하겠습니다.
다른 분들이 주석을 다는 것을 보았습니다. 저도 이번에는 주석을 달겠습니다.
5. 마무리... 회사생활과의 병행
이번주 3일동안 온라인 강의가 있는데, 이것을 재택으로 따냈습니다. 다음주 학습 내용과 과제가 버겁지는 않을지 걱정이 되었는데, 다행입니다. 시간을 잘 활용하도록 하겠습니다.
시간이 허락한다면, 학습 내용에 대해서 글로 좀 정리하고 다듬고 싶은데 시간이 날 수 있을까!?
'회고' 카테고리의 다른 글
210301_TIL (0) | 2021.03.02 |
---|---|
[ 코드숨 ] 5주차 회고록 (0) | 2021.03.01 |
[코드숨] 4주차 회고록 (0) | 2021.02.22 |
[코드숨] 3주차 회고 (0) | 2021.02.08 |
[코드숨] 1주차 회고 (0) | 2021.01.24 |