ex) 전화번호 포맷팅 함수 - 사람 X, 전화번호 자체 O
1. 폭넓게 쓰이는 변수라면 변수캡슐화하기(6.8)를 고려한다.
2. 이름을 바꿀 변수를 참조하는 곳을 모두 찾아서, 하나씩 변경한다.
( 다른 코드베이스에서 참조하는 변수는 외부에 공개된 변수이므로 이 리팩터링을 적용할 수 없다. 변수 값이 변하지 않는다면 다른 이름으로 복제본을 만들어서 하나씩 점진적으로 변경한다. 하나씩 바꿀 때마다 테스트한다.
3. 테스트한다.
tpHd의 이름을 _title로 바꾸고자 한다. tpHd는 값도 변경되는 등 폭넓게 쓰인다.
// 변경전 코드
let tpHd = "untitled";
result += `<h1>${tpHd}</h1>`;
tpHd = obj['articleTitle'];
// 캡슐화
let tpHd = "untitled";
result += `<h1>${title()}</h1>`;
setTitle(obj['articleTitle']);
funtion title(){ return tpHd; } //tpHd getter
functioin setTitle(){tpHd=arg;} //tpHd setter
// 이름 변경
let _title = "untitled";
result += `<h1>${title()}</h1>`;
setTitle(obj['articleTitle']);
funtion title(){ return _title; } //_title getter
functioin setTitle(){_title=arg;} //_title setter
cpyNm 을 companyName 로 바꾸려고 한다.
항상 아래와 같이 만들어본다음
테스트에 통과하면
cpyNm을 사용하는 코드를 companyName으로 바꾸자
const companyName="삼성";
const cpyNm = companyName;
6.6. 변수 캡슐화하기 (Encapsulate Variable) (0) | 2021.09.26 |
---|---|
6.3. 변수 추출하기 (0) | 2021.09.26 |
6.1. 함수 추출하기 (0) | 2021.09.26 |
9.2. 필드 이름 바꾸기 (Rename Field) (0) | 2021.09.25 |
6.2. 함수 인라인하기 (inline Function) (0) | 2021.09.25 |