"재구성-기존 코드 디자인 개선"독서 노트--Split Temporary Variable

3307 단어 temporary
계속해서 우리 재구성 기법의 시리즈를 시작하겠습니다. 오늘 소개한 것은 Split Temporary Variable---분해 임시 변수입니다.
우리가 평상시에 쓰는 프로그램에는 틀림없이 어떤 임시 변수가 하나 이상의 책임을 부여받았을 것이다.만약 그들이 수집 결과(temp =temp + QString("abc")나 순환 변수(i = i + 1)가 아니라면, 그들은 한 번 이상 값을 부여받는다.그러면 우리는 이 변수에 하나가 넘는 책임이 부여되었다고 확신한다. 이것은 작은 문제라고 보지 마라. 그러나 이것은 우리 읽는 사람의 판단을 방해할 것이다. 우리는 이 변수가 도대체 무엇에 쓰였는지 추측할 것이다.따라서 우리가 절차의 정상적인 사고방식을 똑똑히 보는 데 영향을 미친다.
따라서 우리는 매번 값을 부여할 때마다 독립적이고 대응하는 임시 변수를 만들어야 한다.
방법: 1) 임시 변수를 분해해야 하는 곳의 성명과 그가 처음 사용한 곳에서 그의 이름을 수정한다.
2) 임시 변수의 이름을 변경한 후 const로 선언
3) 두 번째 값을 부여한 곳에서 그 임시 변수를 다시 성명한다
4) 컴파일 테스트
5) 상기 과정을 반복하여 매번 성명처에서 개명하고 다음에 값을 부여하기 전의 인용점을 수정한다.
예:
double getCost() 

{

    double res;



    double mealMoney = m_chickMoney + m_chipMoney;



    res += mealMoney;



    mealMoney = m_cocoaMoney + m_coffeeMoney;



    res += mealMoney;



    return res;

}

이를 통해 알 수 있듯이 그 중의 mealMoney는 두 번이나 값을 부여받았고 그는 결과를 축적하는 역할을 하지 못했고 축적 결과는res에 주었다.그래서 우리는 이 변수의 의도를 더욱 명확하게 하기 위해 재구성을 해야 한다.
그래서 우리는 첫 번째 단계에서 이 변수가 첫 번째로 성명한 곳을 찾아 const로 성명하고 이름을 바꾼 다음에 두 번째 할당 전의 모든 인용점을 수정하고 두 번째 할당을 다시 성명한다.
double getCost() 

{

    double res;



    const double foodMoney = m_chickMoney + m_chipMoney;



    res += foodMoney;



    double mealMoney = m_cocoaMoney + m_coffeeMoney;



    res += mealMoney;



    return res;

}

이를 통해 알 수 있듯이 MealMoney는 우리가const double foodMoney로 바뀌었고 인용점을 수정했으며 두 번째 값을 부여한 MealMoney에 다시 성명을 추가했다.상술한 과정을 반복하여 2차 변수 부여의 재구성을 진행하다
double getCost() 

{

    double res;



    const double foodMoney = m_chickMoney + m_chipMoney;



    res += foodMoney;



    const double drinkMoney = m_cocoaMoney + m_coffeeMoney;



    res += drinkMoney;



    return res;

}

이를 통해 알 수 있듯이 우리가 변수의 재구성을 완성한 후에 함수는 임시 변수 이전의mealMoney에 대한 곤혹스러움이 없어졌다. 전체적으로 변수 이름 자체가 논리를 더욱 명확하게 하기 때문이다.물론 여기서 우리는 잠시 다른 재구성 수법을 고려하지 않는다:)

좋은 웹페이지 즐겨찾기