inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[워밍업 클럽 스터디 백엔드 2기] 1주차 회고

korong lee
0

출처 : Readable Code: 읽기 좋은 코드를 작성하는 사고법 - 박우빈

 

1. 학습 내용 요약

추상(섹션 1, 2)

클린 코드를 추구하는 이유

바로 “가독성” → 유지보수가 쉬움 = 비용 감소

 

이름짓기

이름을 짓는다 = 추상화

  1. 단수와 복수를 구분하기

  2. 이름 줄이지 않기

  3. 은어/방언 사용 X

  4. 좋은 코드를 보고 습득하기

 

메서드 선언부

  1. 메서드명

    1. 추상화된 구체를 유추 가능한 적절한 의미의 이름

    2. 파라미터와 연결 지어 풍부한 의미 전달

  2. 파라미터

    1. 파라미터 타입, 개수, 순서를 통해 의미 전달

    2. 외부와 소통하는 창

  3. 반환타입

    1. 메서드 시그니처에 납득이 가능한 적절한 타입의 반환값

    2. void 대신 충분히 반환할 만한 값을 고민

 

논리, 사고의 흐름(섹션 3)

Early return

그냥 if에서 바로 리턴하고, 기존 else를 if로 재작성하면 이전 if문의 조건 정보는 기억할 필요 X → Early return의 장점

따라서 Early return으로 else의 사용을 지양할 것! switch문도 마찬가지!

 

사고의 depth 줄이기

  1. 중첩 분기문, 중첩 반복문

    1. 인지해야 하는 조건들이 너무 많음

    2. 메서드로 추출해서 다 분리하면 best

    c. BUT. 무조건 1 depth로 만들어라가 아님!!! → 사고 과정의 depth를 줄이는 것이 핵심

  2. 사용할 변수는 가깝게 선언하기

 

부정어구 사용 자제

  1. 부정어구를 쓰지 않아도 되는 상황인지 체크 → right, left, up, down

  2. 부정의 의미를 담은 다른 단어가 존재하는지 고민 or 부정어구로 메서드명 구성

 

해피 케이스와 예외 처리

예외 처리 방법

  1. 예외가 발생할 가능성 낮추기

  2. 어떤 값의 검증이 필요한 부분은 주로 외부 세계와의 접점 → 사용자 입력, 객체 생성자, 외부 서버 요청 등

  3. 의도한 예외와 예상하지 못한 예외 구분하기

 

SOLID(섹션 4)

SRP: Single Responsibility Principle

2. OCP: Open-Closed Principle

3. LSP: Liskov Substitution Principle

4. ISP: Interface Segregation Principle

5. DIP: Dependency Inversion Principle

 

Value Object(섹션 5)

 

VO vs Entity

 

일급 컬렉션

 

Enum

 



2. KPT

Keep(칭찬하고 싶은 점)

 

Problem(아쉬웠던 점)

 

Try(보완하고 싶은 점)

 


 

3. 미션 회고

미션 1 : 드립 커피 추출을 추상과 구체화로 표현했다. 구체화의 단계를 어느 단계까지 low하게 내려가야 할 지 다소 난감했던 기억이 난다. 추후 다른 사람들의 미션 내용도 확인하면서 조금 더 학습할 예정이다.

미션 2 : 코드 리팩토링 과제였다. 학습한 내용을 단계별로 적용하는 과정을 남기고 싶었는데 이게 단계를 명확하게 구분하기 어렵고, 순서도 머릿속에 뒤죽박죽이 되어 step 별로 정리하는데 애를 먹었다. 실제로 공부한 내용을 적용해 볼 수 있는 시간이라 재밌었다.

 


 

4. 느낀점

미션2를 제출하면서 다른 분들이 제출한 내용도 함께 봤는데 역시 잘 하시는 분들이 어마어마하게 많았다. 강의내용에도 허덕이는 스스로에게 자괴감이...😢 그래서 이번주 결론은 다음주는 더 빡세게 공부하자!!!!!!!!!

백엔드 백엔드 워밍업 스터디 클럽 클린코드 발자국

답변 0