Search

리팩터링 2판 스터디 - 7

리팩터링 2판을 회사 팀 내 스터디로써 진행한다. 스터디에선 따로 책 내용을 정리를 하지 않고 주마다 정해진 분량까지 읽고 감상을 나눈다. 여기선 개인적으로 매 분량에 대한 정리와 짧은 감상을 올린다.

05 리팩터링 카탈로그 보는 법

이번부터는 내용 정리가 아닌 각 단원마다의 코멘트를 한다. 이전까지는 각 단원의 내용을 간단하게 정리했지만, 특히 이 5장의 경우는 내용이 앞으로의 남은 단원을 읽는 방법이기 때문에 크게 의미가 없다. 또 이번에 다룰 기초적인 리팩터링의 첫 4가지는 어려운 개념이 아니라 책에서 설명하는 방법과 예시에 대한 정리가 아닌 나의 코멘트 위주로 적는다. 후에 나오는 리팩터링 기법이 생소하면 다시 정리가 추가될 수 있다.

06 기본적인 리팩터링

이름 짓기
6.1 함수 추출하기
6.3 변수 추출하기
이름 바꾸기
6.5 함수 선언 바꾸기
6.7 변수 선언 바꾸기
6.6 변수 캡슐화하기
6.8 매개변수 객체 만들기
고수준 모듈화; 이름 짓기는 기본적인 저수준 리팩터링
6.9 여러 함수를 클래스로 묶기
6.10 여러 함수를 변환 함수로 묶기
명확한 단계 구분 짓기
6.11 단계 쪼개기

6.1 함수 추출하기

이름을 짓는 것 자체가 중요하다.
이름은 의도(목적, 무엇을) 하는지 나타내는게 중요하다.
내용에 구현(어떻게)을 쓰자.
중첩 함수
이름의 문맥을 제한하는 방법은 좋은거 같다.
지역 변수의 참조는(변수의 유효 범위) 조심히 다뤄야 한다.
이름이 겹친다거나…
값을 반환할 변수가 여러 개라면?
실질적으로 중요한 문제 같다. 리팩터링하기 전의 코드는 묶여 있는 블록은 한 변수씩 처리하지 않고 이러고 있을 가능성이 크기 때문에

6.2 함수 인라인하기

구현을 그저 이름으로 감싼 것이라면 적용해도 될 것이다.
e.g. moreThanFiveLateDeliveries : numberOfLateDeliveries > 5

6.3 변수 추출하기

이름이 의미 있는 문맥이 함수 안일 때 적용한다.
문맥이 클래스라면 메소드로 추출한다.
적당히 쓰기 나름이지만 마틴은 6.1을 더 선호하는 것 같다.

6.4 변수 인라인하기

6.2의 변수 버전

느낀점

함수 추출하기를 중복 제거가 목적이라고 생각했어서 다른 관점으로 보인다.
중복 제거 관점에서..
vue의 v-slot은 리팩터링 관점에서 좋은 것인가
고차 함수 덩어리(가 크면 클 수록)를 넘기고 껍데기만 추출하는 느낌
중복이 있다는 것은 그 문맥에서 이름으로 불릴만한 것인가
vuetify와 같은 라이브러리 사용은 이름 짓기류의 리팩터링을 주저하게 만드는 느낌이 있다.
6.3은 함수에 비해 애매하고 보통 리뷰를 하면 6.4와의 대립이 더 많았던 거 같다.
문맥적인 영역(scope)과 문법적인 영역은 다르고 앞의 것을 따르면 완전한 규칙이 있진 않을거 같다.
vue 같은 프레임워크 사용 시 프레임워크가 제한하는 영역에서 함수보단 변수로써의 이름 사용을 더 유도하는 느낌이다.