클린코드 발자국 - 1주차 (워밍업 클럽 2기 - BE 박우빈)
이번 주 핵심 요약
추상화를 통해 얻을 수 있는 이점을 이해하고 체득하면 더 도움 됨.
도메인 지식과 연관지어, 문제 해결을 위한 하나의 도구, 하나의 개념...
현재 다루는 코드의 목적이 분명해지고, 작업을 이해하기 용이해 짐
느끼기에, 코드를 추상화하고 리팩토링하고 요약하는 과정은, 어떤 주제에 대해 말로 풀어 설명하는 것과 유사한 것 같기도? 순차적이고 논리적인 방식의 말이 듣고 이해하기 좋은 듯이, 작업의 순서와 목적, 작업 내용이 빠르게 눈에 들어오도록...
SOLID => 위의 내용들을 체계화하고 정리한 핵심 개념으로, 알아두면 손해는 없을 듯. 되새겨보자
강의 수강
학습 내용 + 이해한 내용
추상
추상이 뭔데? -> 묶고, 덜어내는 것(????). 공통된 특성을 찾아 묶은 뒤, 더 상세한 부분은 뭉술하게 덜어내는 것(중요하지 않아서 X, 나중에 SOLID 등의 개념과 함께 더 나은 방식으로 구체화...)클린 코드에 대해...
우리는 코드를 많이 쓰는 것도 좋지만, 많이 읽어야 함(실제로도 읽는 비율이 높고...). 그렇기에 내 코드를 읽기 쉽게 쓴다는 것은 제일 먼저 나 자신, 나아가 동료들에게 정말 좋은 역량 -> 클린 코드. 변수, 클래스명을 잘 짓거나, 적절한 위치에 적절한 depth와 위치를 유지하는 것만으로 정말 가독성이 좋아진다.결국 읽는 것은 사람
사람의 뇌가 어떻게 동작하느냐를 간단히라도 이해하고, 그 과정에 맞게 코드가 읽히도록 리팩토링해보자. 뇌가 한번에 기억할 양을 줄이고(좁은 작업에 집중시키기 => 메소드 분할, 연산 줄이기 => Early return 등...), 현재 작업에 기대하는 시나리오에 맞게 코드를 전개.객체 지향과 SOLID
처리해야할 작업(도메인)에 집중해서 작업한 뒤, 객체 지향적 관점으로 코드를 다시 훑어보자. 이 때 SOLID 사용하면 도움 됨. 기초적이고 순수한 Java 객체 개념에 집중하면 코드를 더 알아보기 쉽게 정리하는 역량이 향상됨. 결국 도메인을 위해 복잡한 구조의 어떤 객체를 마련하기보다, 매우 작은 작업 단위를 처리하도록 설계된(아주 많이 추상화된) 객체를 조합하고 구체화하는 식으로 작업함이 좋다고 나는 이해함.칭찬, 아쉬움, 보완
칭찬해요: 강의 빼놓지 않고 들은 것만으로 칭찬 ㅎㅎ
아쉬워요: 코드를 따라 작성하는 과정을 매우 많이 스킵함
보완할것: 실습 과정을 더 가져보자
미션 수행
미션과 수행과정
내가 생각하는 추상과 구체란...
내가 확실히 아는 지식은, 편하게 말로 설명할 수 있어야 한다는 관념이 있는데 그것을 여실히 느꼈던 미션. 강의를 이해했다 생각했지만 이것을 나만의 언어로 풀어낼 때 은근 어려움이 많더라...SOLID에 대해 정리해보고 코드 리팩토링 해보기
외국어로 쓰여진 개념이라 몇 개는 정말 이해하기 어려웠음... 코드는 직접 읽어보고 '어 여긴 이해하기 어려운데...' 하는 부분을 중점적으로 리팩토링 했음. 크게 SOLID를 사용하진 않은 듯. 강의 때 배운 개념과 거의 부합하는 보완 사항이라 쉬웠음.
미션 회고
첫 주라 그런지 거의 강의만 들어도 처리 가능한 수준의 과제들이였던 듯. 지식 개념을 정말 내 언어로 편히 표현할 수 있을 정도로 내 것으로 만들었는지에 대해 주안을 둔 느낌이었음. 그래야 리팩토링 때 그것들을 내 것처럼 적절히 사용 가능할 테니까...
마무리
Java 기초 개념 중 모르는 게 몇가지 있더라... (ex. Enum, Optional 등...). 이런 것들 따로 알아봐야 하는데 못했음. 남은 커리큘럼 보니 실습 분량이 많아질 것 같으니 기초 문법들은 잡아두고 들어가야 하지 않을까... 그래도 평소 코드를 작성하며 느꼈던 점들이 강의 내용에 많이 녹아 있는 것 같아 다행스럽기도 하고, 이해가 쉬웠음. 강사님께서 여러 예로 설명 들어주시는데 이해 잘 되어서 다행.
댓글을 작성해보세요.