[인프런 워밍업 클럽 스터디 2기] 백엔드 클린 코드, 테스트 코드 1주차 발자국
해당 글은 박우빈님의 강의를 수강하며 작성한 글입니다.
강의 수강
1. 추상과 구체
추상과 구체, 이 두 단어는 항상 같이 다니는 한 쌍이다.
추상이란?
구체적인 정보에서 어떤 이미지를 뽑아내는 것.
중요한 정보는 가려내어 남기고 덜 중요한 정보는 생략하여 버린다.
추상은 항상 구체적인 실재에서 시작해야 한다.
위 내용을 통해 구체적인 내용에서 추상의 단계로 가는 방법이 있고, 그 반대의 방법도 존재한다.
우리는 강의를 통해서 구체적인 지뢰찾기 코드를 추상화해가며 객체지향의 개념을 적용해보는 시간을 가졌다.
2. 논리, 사고의 흐름
뇌 메모리 적게 쓰기
최소한의 인지적 노력으로 최대의 정보를 제공해야 한다.
뇌는 범주화라는 작업을 통해 무언가를 떠올린다.
이 말은 즉, 누군가 작성한 코드(조상)가 남(후손)이 보아도 쉽게 읽고 이해할 수 있다면, 그것은 뇌 메모리를 적게 쓸 수
있게 한 효과적인 코드가 아닐까 싶다.
Early return
Early return 사용을 통해 else의 사용을 지양하자
사고의 depth 줄이기
공백 라인
공백 라인도 의미를 가진다.
읽는 사람으로 하여금 의미를 분절시켜 추가적인 정보전달이 가능하다.
부정어 사용
부정어구를 쓰지 않아도 되는 상황인지 체크
부정의 의미를 담은 다른 단어가 존재하는지 고민하거나 부정어구 메서드 사용
해피 케이스와 예외 처리
3. 객체 지향 패러다임
객체 설계하기 : 미션으로 대체
SOLID
SRP: Single Responsibility Principle
OCP: Open-Closed Principle
LSP: Liskov Substitution Principle
ISP: Interface Segregation Principle
DIP: Dependency Inversion Principle
4. 객체 지향 적용하기
상속과 조합
상속보단 조합을 이용하자.
조합과 인터페이스를 활용하는 것이 유연한 구조다.
Value Object
훌륭한 추상화 기법 중 하나
기본 타입을 객체로 감싸서 의미 부여 및 추상화를 하는 것.
동등성 vs 동일성
일급 컬렉션
Enum의 특성과 활용
상수집합
변경이 잦은 개념은 Enum보다 DB로 관리하자.
다형성 활용하기
숨겨져 있는 도메인 개념 도출하기
도메인 지식은 만드는 것이 아니라 발견하는 것이다.
미션
Day 2
추상과 구체의 예시 제시
추상
"노래를 듣는다" 라는 추상적인 문장을 구체화 해보았다
구체
이어폰에서 발생한 음파가 공기를 통해 외이로 도달한다.
외이도를 통해 전달된 음파는 고막에 도달하고, 고막은 음파에 의해 진동한다.
고막의 진동은 중이의 세 개의 작은 뼈로 전달된다.
세 개의 뼈는 음파의 진동을 증폭시켜 내이의 달팽이관으로 전달한다.
달팽이관에 있는 액체가 움직이면서 유모 세포를 흔들고, 이 과정에서 전기 신호로 생성한다.
전기 신호가 청각 신경을 통해 뇌로 전달된다.
뇌의 청각 피질이 신호를 분석하고 해석하여 소리를 인식한다.
Day 4
1. 코드 리팩토링
2. SOLID에 대한 자기만의 언어로 정리
회고
클린코드란 무엇인가 에 대해 다시 한번 고민하게 되는 주간이었다.
사이드 프로젝트를 진행하면서 주로 나의 코드를 내가 자주 보고 고치기 때문에 남이 어떻게 이해할지에 대해서 깊게 고민해보지 못했던 것 같다. 이번 기회를 통해 프로젝트 코드에서 고칠 부분이 상당히 많이 떠올랐고, 스터디 중간 중간 적용해보려고 노력하려 한다.
빡빡한 스케줄을 회사와 병행하다보니 강의 수강과 미션 수행을 모두 처리하는 것이 상당히 쉽지 않았다. 다행히 이번 주간에는 쉬는 날이 많아서 겨우 맞춰나간 것 같다. 많은 스터디원 분들이 성실히 수행하는 것을 보며 동기부여가 되고 있다.
남은 3주도 잘 마무리하여 완주러너가 되고 싶다.
댓글을 작성해보세요.