리팩터링 2판을 회사 팀 내 스터디로써 진행한다. 스터디에선 따로 책 내용을 정리를 하지 않고 주마다 정해진 분량까지 읽고 감상을 나눈다. 여기선 개인적으로 매 분량에 대한 정리와 짧은 감상을 올린다.
6장 이후로 각 기법의 절차, 예시보단 배경 위주로 정리한다.
리팩터링 기법 명칭은 빨간색으로 표시한다.
10 조건부 로직 간소화
10.1 조건문 분해하기
•
복잡한 조건식을 함수로 추출하자
10.2 중복 조건식 통합하기
•
여러 조건식, 특히 판별 후 결과가 같은 것들은 하나로 묶자
•
and, or를 사용하자
10.3 중첩 조건문을 보호 구문으로 바꾸기
•
중첩 조건문은 바깥부터 함수를 일찍 처리(반환, throw) 해줄 수 있다.
•
(무언가를 하지 않는 조건으로써는) 조건을 반대로 만들어 하는 것도 가능하다.
10.4 조건부 로직을 다형성으로 바꾸기
•
다형적 동작(switch case처럼 여러 조건 분기의 경우)을 클래스로 만들어 준다.
•
로직의 동작은 객체를 만드는 팩토리 메소드로 전환한다.
•
슈퍼클래스를 메소드로 로직을 옮긴다.
•
서브클래스마다 다른 동작을 구현한다.
느낀점
•
이건 그냥 함수 추출 아닌가? 조건 표현식이라는게 (만들다보면 심취해서) 장황하게 동작만 설명할 수 있으므로 왜하는지 이름을 붙여주자.
•
•
guard clause는 early return과 다른가?
◦
gpt는 굳이 다른것처럼 답해줬지만 그렇게 구분해서 쓰는거 같진 않다
답변 요약
◦
반환 vs. 에러, abort
•
요즘은 switch case가 패턴 매칭을 지원하는 경우가 많다.
◦
10.4가 switch case 를 저격?하는건 아니지만 중첩과 대구를 이루어 같은 수준에서 여러 조건문에 대한 다양한처리를 이야기하는거 같다.
◦
deconstruction + 선언적 조건문
루비(gpt가 준 예제)
엘릭서
러스트
◦
js는 proposal이 있긴하다; proposal-pattern-matching
▪
라이브러리 ts-pattern
◦
go는 안 만들거 같다.