본문 바로가기
Web development/Books

Refactoring - Split Variable

by 자몬다 2019. 12. 31.
Martin Fowler - Refactoring을 읽고 정리한 글입니다.(240~243p)

 

예제

// Before
let temp = 2 * (height + width);
temp = height * width;

// After
const perimeter = 2 * (hieght + width); // perimeter : 주변, 외곽
const area = height * width;

temp라는 변수를 let으로 선언하고 수정하고 있는데

밑에는 보면 두 개의 const로 선언해서 쓰고있다.

이렇게 변수를 나누는것.

 

Motivation

변수는 다양하게 쓰인다. 그 결과 변수의 값이 여러번 할당되기도 한다. for문에서 쓰는 index[i]같은 변수는 실행될때마다 바뀐다. 변수는 값을 메서드가 진행되는 동안 저장한다.

많은 다른 변수들은 간단한 참조를 위해서 장황한 코드가 실행되는 동안 결과를 계속 들고 있는다.

만약에 그 변수들이 여러번 셋 되면 그 변수는 여러 개의 책임을 갖는다는 신호다.

여러 책임을 갖는 어떤 변수든 각각 하나의 책임을 갖는 변수들로 대체되어야 한다.

두개의 다른 역할을 하는 변수를 만드는 것은 읽는 사람에게 매우 혼란스럽다.

 

Mechanics

  1. 처음 선언된 변수 이름을 바꿔라 만약에 i = i + something 이런게 있으면, 그건 collecting variable이고 나누지마라. 이런건 sum을 구하거나 string concat이거나 스트림을 쓰거나 콜렉션에 추가하는 변수다.
  2. 가능하다면 새 변수는 immutable하게 선언해라.
  3. 변수가 참조하는 모든 레퍼런스를 두번째 할당된 변수로 바꿔라.
  4. 테스트
  5. 마지막으로 할당된 변수에 도달할때까지 반복해서 작업한다. 반복할때마다 다음 할당까지 변수이름을 다시 짓고 참조를 바꿔라.

 

댓글