인프런 워밍업 클럽 2기 - 백엔드 클린코드, 테스트코드 1주차 발자국
1주차 발자국 미션 정리
강의 출처 - Readable Code: 읽기 좋은 코드(인프런, 박우빈) (https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95)
- 한 주간 배운 것들
1) 추상: 추상이란 어떤 것의 중요한 점만 뽑아 추려내는 것. 코드에서도 추상화를 통해 중요한 점 만을 뽑아내어, 가독성을 향상시킬 수 있다. 강의를 듣기 전에는 추상화란 개념에 대해 뜬구름처럼 들렸는데, 메소드 레벨에서의 추상화, 추상화의 예시 등 강의를 들으니 더 구체적으로 이해할 수 있었다. 또한 예시 코드를 리팩토링하면서 코드 간 추상화레벨을 맞추면서 네이밍하거나 메소드를 추출하는 등의 습관이 코드 가독성에 중요하다는 것을 알 수 있었다.
2) 뇌 메모리 적게 쓰기: 개발자는 코드를 작성하다보면 여러가지 정보들을 생각하면서 코드를 짜야한다. 계속 생각해야 하는 정보들을 가능한 줄이면 줄일수록 코드를 작성할 때나, 읽을 때나 나아진다. 예를 들면return문을 활용하여 불필요한 조건문을 줄이거나, 될 수 있으면 부정어를 사용하지 않는 등의 습관을 들이는 것이 좋다. 이 부분은 기존에도 노력하고 있던 부분이라 리마인드해서 좋았다.
3) 객체지향과 추상화: 객체지향의 5대원칙이라고 불리는 SOLID에 대해 정리할 수 있었다. 객체, 객체의 협력과 책임, 관심사의 분리와 같은 개념을 정리했다. 또한 기존 코드를 리팩토링 하면서, 높은 응집도와 낮은 결합도를 어떻게 구현할 수 있는지 SOLID원칙과 함께 눈으로 확인할 수 있어서 좋았다.
4) 객체지향의 적용: 객체지향 원칙을 지키기 위한 코드레벨에서의 방법에 대해 공부했다. 예를 들면 상속과 조합, 값 객체(Value Object), 일급 컬렉션, Enum과 다형성을 활용한 코드 리팩토링을 진행했다. 공부한 이론을 코드에서 바로 적용시켜볼 수 있는 점이 좋았던 것 같다.
- 미션 해결 과정
1) day2 미션: 강의 내용에서의 추상과 구체에 대한 나만의 예시를 생각하는 미션이었다. 강의 내용대로, 구체를 잘 나타내는 추상과 추상을 잘 나타내는 구체를 찾기 위한 적절한 예시가 실생활에서 있는지 고민해봤다. 강의를 들을 때 미열이 나는 상태여서, 나는 '몸에서 열이 난다'라는 추상을 인터넷 기사를 서칭하여 구체로 풀어냈다.
2) day4 미션: 추상화가 덜 되어있는 코드를 강의에서 배운 내용대로 리팩토링하는 미션이었다. 해당 코드를 보자마자 든 생각은 읽기 어렵다 라는 생각이었다. 불필요한 조건문이 보였고, return문을 활용하면 하나하나 쪼갤 수 있을 것 같았다. 또한 객체에 getter를 사용하여 직접 접근을 해서 데이터를 가져오고 있었기에 이 또한 해당 객체에 역할을 위임할 수 있을 것 같았다. 그리고 마지막엔 적절하게 추상화 레벨을 나눠서 private 메소드를 만들어줬다.
- 회고
1) 강의 수강: 생각보다 시간이 오래걸렸다. 하루에 2~3시간 분량의 진도표를 따라갔는데, 학교수업과 병행하자니 시간 분배가 어려웠다. 그래서 남는 시간마다 강의를 수강했는데, 띄엄띄엄 수강하다보니 집중이 덜 되었던 것 같다. 이 부분은 새로 시작하는 2주차부터 시간을 잘 분배해서 활용해야겠다는 생각이 든다.
2) 미션: 미션 해결 과정이 어려운 편은 아니었으나, 커뮤니티에 올라온 다른 분들의 글을 참고하니 같은 미션이라도 이런 식으로 접근할 수 있구나 하고 생각할 수 있었던 점이 좋았다.
댓글을 작성해보세요.