inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Readable Code: 읽기 좋은 코드를 작성하는 사고법 회고 1주차

lsmunt
0

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

 

1. 회고

저자께서 회고 방식에 대한 아티클을 소개해주셨고 KPT로 진행 후 주차별로 다른 회고 방식을 적용해보려고 합니다.

 

Keep(만족했고 지속할 부분)

 

Problem(부정적 또는 아쉬웠던 부분)

Trying(Problem 해결 방식으로 다음에 시도해볼 점)

 

2. 학습 내용 요약

추상(섹션1~2)

이름짓기

 

메서드 선언부

메서드 선언부 : 반환타입 + 메서드명 + 파라미터

메서드 시그니처 : 메서드명 + 파라미터

반환타입에 대한 고민 : 반환할만한 값이 있는지? boolean이라면 true/false가 무엇을 의미할지?

파라미터가 날짜 형태라면 String 형태보다는 LocalDate가 적절해보임

전치사 잘 활용하기

메서드 내에서 동일한 추상화 레벨로 묶여야함

매직넘버 / 매직스트링 : 상수로 추출되지 않은 숫자나 문자 -> 리팩토링할 때 실제 의미가 같은 데이터만 변경했는지 확인 필요

 

논리, 사고의 흐름

Early Return

if(){}

else if(){}

else{}

구조 보다는 개별 if문과 return 사용(if의 조건을 else 까지 기억하기 어려움)

 

사고의 depth 줄이기

코드 분석이 어렵다면 depth 1로 줄이는 것 고려, 그러나 모든 것을 메서드로 추출하면 오히려 가독성이 떨어질 수 있음

공백 라인을 대하는 자세

비슷한 역할단위로 끊어주기

 

부정어를 대하는 자세

!isLeft

=> isRight, isNotLeft ( 부정 연산자 !의 가독성이 떨어짐)

 

해피 케이스와 예외 처리

예외 발생 가능성 낮추기 - 외부와의 접점

의도한 예외와 예상치 못한 예외 구분

return null 자제,

Optional 사용 고려(단, Optional은 비싼 객체이므로 꼭 필요한 경우에만 사용)

Optional을 파라미터로 받는 것은 안티패턴(Optional이 가진 데이터 null, optional null)

Optional 해소 - isPresent().orElseGet(), orElseThrow(), ifPresent(), ifPresentOrElse() 사용

++ orElse(), orElseGet(), orElseThrow() 차이 숙지

 

객체 지향 패러다임(섹션4)

객체지향 설계

 

SOLID

++ 참고

 

객체지향 적용하기(섹션5)

상속과 조합

Value Object

++ VS Entity

일급 컬렉션

 

Enum의 특성과 활용

 

다형성 활용하기

 

숨겨져 있는 도메인 개념 도출하기

 

 

백엔드

답변 0