Search

리팩터링 2판 스터디 - 14

리팩터링 2판을 회사 팀 내 스터디로써 진행한다. 스터디에선 따로 책 내용을 정리를 하지 않고 주마다 정해진 분량까지 읽고 감상을 나눈다. 여기선 개인적으로 매 분량에 대한 정리와 짧은 감상을 올린다.
6장 이후로 각 기법의 절차, 예시보단 배경 위주로 정리한다.
리팩터링 기법 명칭은 빨간색으로 표시한다.

10.5 특이 케이스 추가하기

특이 케이스(타입) 객체를 만들어 특이 케이스 검사나 처리 값을 객체의 메소드, 속성으로 대체한다.

10.6 어서션 추가하기

항상 참이어야 하는 곳에 어서션을 추가한다.
이 코드의 오류는 개발자의 잘못이다 라고 소통할 수 있게 한다.

10.7 제어 플래그를 탈출문으로 바꾸기

제어 플래그를 제거하고 return, break, continue의 제어문으로 바꾼다.

11 API 리팩터링

11.1 질의 함수와 변경 함수 분리하기

값을 반환하는(=질의 함수)는 ‘겉보기’ 부수효과가 없어야한다.
캐시를 사용한다면 캐시 상태의 변경은 모르기 때문에 겉보기 부수효과이다.
상태를 변경하는(=겉보기 부수효과가 있는) 함수와 분리해야한다.

11.2 함수 매개변수화하기

여러 함수의 리터럴을 매개변수화한 새 함수를 만들어 호출마다 변경한다.

느낀점

go의 any 타입 어서션은 성공 여부를(두번째 반환) 계속 위로 올려야 한다.
객체(구조체) 생성에서 실패하도록 하면 좀 나을까 싶다.
disjoint 대신 순회하며 검사하는게 당연하다고 생각했는데 꽤 많은 언어 기본 라이브러리에서 지원한다(하지만 isDisjointWith 가 있는 콜렉션 객체는 없는 듯?).