
워밍업 클럽 4기 백엔드 - 1주 차 발자국
👣1주 차 발자국
✅ 강의 요약
- 추상
우리가 클린 코드를 추구하는 이유 - 가독성
이해가 잘 된다.
유지보수 하기 쉬워진다.
시간과 자원이 절약된다.
클린코드를 관통하는 주제 - '추상'
추상이란?
중요한 정보는 가려내어 남기고, 덜 중요한 정보는 생략하여 버리는 것.
적절한 추상화는 복잡한 데이터와 복잡한 로직을 단순화하여 이해하기 쉽도록 돕는다.
적절한 추상화는 무엇인가?
이름 짓기
단수,복수 구분
이름 줄이지 않기
은어/방언 사용 금지
비슷한 상황에서 자주 사용하는 단어, 개념 습득하기
메서드로 추상화
한 메서드의 주제는 하나
추상화된 구체를 유추할 수 있는 적절한 메서드 선언부 구성
추상화 레벨 동등하게 구성
하나의 세계 안에서는 추상화 레벨이 동등해야 한다.
매직 넘버, 매직 스트링
의미 있는 숫자,문자열은 상수로 추출해 가독성과 유지보수성을 높인다.
- 논리, 사고의 흐름
아래의 과정들을 통해 읽기 좋은 코드를 만들어 뇌 메모리를 적게 쓰게 한다.
early return
else 사용을 지양해 아래쪽 코드를 읽을 필요를 줄인다.
사고의 depth 줄이기
추상화를 통해 사고의 depth를 줄이고, 사용할 변수는 가깝게 설정한다.
공백 라인
의미 단위를 공백라인으로 나누어 가독성을 높인다.
부정어
부정어구를 사용 하지 않아도 된다면, 사용 안하게끔 리팩토링 한다.
부정의 의미를 담는 다른 언어나 부정어구로 메서드명을 만들어 부정 연산자 사용을 지양한다.
예외처리
예외 발생할 가능성을 낮춘다.
의도한 예외와 예상하지 못한 예외를 구분해 작성한다.
항상 NPE를 생각하자.
- 객체 지향 패러다임
객체란 결국 추상화된 데이터 + 코드
객체가 여러개 생기면서 객체간 협력과 책임을 구분하는게 중요해짐.
객체간 협력, 책임의 관점에서 추상화를 생각해야 한다.
관심사에 따라 객체를 나눈다.
높은 응집도, 낮은 결합도가 생긴다.
객체에 메세지를 던져야 한다.
getter/setter를 지양한다.
- SOLID
SRP: 하나의 클래스는 하나의 변경 이유만을 가져야 한다.
OCP: 기존의 코드 수정없이 시스템의 기능을 확장할 수 있어야 한다.
LSP: 상속 구조에서, 자식클래스는 부모 클래스의 책임을 준수하며, 부모 클래스의 행동을 변경하지 않아야 한다.
ISP: 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하면 안 된다. (그럴 경우, 인터페이스를 분리해야 한다.)
DIP: 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다.
- 객체 지향 적용하기
상속과 조합
상속은 결합도가 높다.
중복이 생기더라도 조합과 인터페이스를 활용하자.
Value Object
불변성, 동등성, 유효성을 보장해야하며 도메인의 개념을 추상화한 객체
Entity
식별자가 존재. 식별자가 같으면 동등한 객체로 취급한다.
일급 컬렉션
컬렉션을 Wrapping한 객체
컬렉션을 추상화시켜 가공된 로직을 넣을 수 있다.
getter로 반환 해야 할 경우, 새로운 컬렉션을 만들어서 반환
Enum
상수의 집합
상태와 행위를 한 곳에서 관리할 수 있는 추상화된 객체
변경이 잦으면 DB로 관리하는 걸 고려
다형성 활용
변하는 것과 변하지 않은 것을 구분해서 추상화
숨겨져 있는 도메인 개념 도출하기
도메인 지식은 만드는 것이 아니라 발견하는 것
변경이 많이 일어날 것 같은 미래를 예측해서 최선의 설계를 하고, 다시 돌아올 수 있도록 코드를 만들자.
✅ 강의 회고
코드를 따라 치면서 많이 학습했다고 느꼈지만, 어느 학습이던 복습이 중요하겠지만 개념적인 부분은 특히 복습이 중요한 것 같다. 강의 예제(코드)가 좋아서 다시 돌려서 리팩토링 해보면서 따라가니까 좀더 확실하게 얻을 수 있었다.
학습 시간적인 측면에서 관리를 잘 못해서 처음에 몰아 듣고, 마지막에 몰아 듣게 되었는데 강의가 주제별로 잘 나뉘어져 있기 때문에 시간 관리를 위해서라도 잘 쪼개서 시간관리를 잘 해서 완강과 학습에 도움이 되도록 해야할 것 같다.
✅ 미션 과정
특별히 어렵게 고민한 것은 없었다.
추상과 구체, SOLID는 일상생활에서 자주 볼 수 있는 것으로 나타내면 좋을 것 같아 각각 자동차, 스마트폰에 빗대어 표현했다.
✅ 미션 회고
'자기만의 언어로 키워드 정리하기' 가 정말 중요한 것 같다.
어떤 분야던 학습하면서 머리에 이미지화 해서 기억한다던가 하면 오래 기억한다고 하는데, 이번 과정에서 그것을 느꼈다.
SOLID 원칙을 달달 외우기는 했지만 설명을 한다면 어떻게 ...?
이번 미션을 통해 자신만의 언어로 이미지화 했기 때문에 누구에게 설명할 때는 딱딱한 텍스트 보다는 부드럽게 설명할 수 있을 것 같다.
댓글을 작성해보세요.