"재구성-기존 코드 디자인 개선"독서 노트----Introduce Explaning Variable
3660 단어 variable
방법은 일반적으로 const로 임시 변수를 설명하여 표현식의 값을 저장한 다음에 표현식 결과를 인용하는 곳을 바꾸는 것이다.다음은 구체적인 예를 살펴보자
double price()
{
return m_quantity * m_itemPrice - qMax(0, m_quantity - 500) * m_itemPrice * 0.05
+ qMin(m_quantity * m_itemPrice * 0.1, 100.0);
}
이런 긴 함수에 대해 우리는 당해내기 어렵다. 인트로듀스 Explaning Variable를 진행하여 m 를quanity * m_itemPrice에서 추출한 결과 다음과 같습니다.
double price()
{
const double basePrice = m_quantity * m_itemPrice;
return basePrice - qMax(0, m_quantity - 500) * m_itemPrice * 0.05
+ qMin(basePrice * m_itemPrice * 0.1, 100.0);
}
베이스프라이스는 const double 형식으로 설명하고 초기화하여 이 표현식 결과를 인용하는 모든 부분을 대체합니다. 알고리즘의 논리가 명확하다는 것을 알 수 있습니다.
여기서 제 견해를 검증하기 위해 Extract Method를 사용해 재구성해 결과가 어떻게 다른지 봅시다.
double price()
{
return basePrice() - qMax(0, m_quantity - 500) * m_itemPrice * 0.05
+ qMin(basePrice() * 0.1, 100.0);
}
double basePrice()
{
return m_quantity * m_itemPrice;
}
Extract Method 기법을 사용한 결과를 보면 다음과 같은 몇 가지 장점이 있음을 알 수 있다.
【1】도 가장 뚜렷하다. Extract Method 이후의 결과는 Introduce Explaning Variable보다 뚜렷하고 간단하다. 사실 이것도 확실하다. 왜냐하면 후자는 임시 변수를 도입하여 함수의 길이를 더욱 높일 수 있기 때문이다.
【2】basePrice의 추출에 있어 price()라는 함수에 대해 Introduce Explaning Variable에서 추출한 임시 변수는 이 함수에서만 사용할 수 있고 Extract Method는 클래스의 모든 곳에서 사용할 수 있다.
종합적으로 보면 Extract Method는 Introduce Explaning Variable보다 훨씬 쓰기 좋고 작업량에 있어서 양자는 거의 차이가 없다는 것을 알 수 있다.그럼 학우들이 물어볼 거예요. 그럼 이 재구성 수법은 언제 쓸 거예요?아직도 있다. Extract Method가 순조롭게 전개되지 않을 때, 예를 들어 임시 변수가 많아서 추출할 수 없기 때문에 이럴 때 임시 변수를 도입하는 것이 쉽다.그리고 코드 논리가 명확해질 때까지 기다렸다가 Replace Temp with Query를 사용하면 임시 변수를 쉽게 제거할 수 있다.만약 당신이 최종적으로 Replace Method with Method Object를 사용하려고 한다면, 이 수법은 당신의 추출에 가치를 제공할 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift Basic - 상수/변수/타입변할 수 있는 값입니다. 상수와 변수 중 하나만 존재하게 되면, 고정된 값을 변수로 만들어서 변할 수 있는 여지를 줄 수 있고, 변해야하는 값을 고정시켜버려서 불편을 줄 수 있기 때문이 아닐까 싶습니다. 상수를 사용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.