Refactoring 과 관련된 론, 문/답변 로 다.
게 는 글 가다.( ) 맞 는 부 바랍다.
refactoring , Refactoring 결과가 같 다. 라는 것다.
Martin Folwer Refactoring p326(), 10 Parameterize Method 를 보면 다과 같 내 나다.
~cpp
protected Dollars baseCharge() {
double result = Math.min(lastUsage(),100) * 0.03;
if (lastUsage() > 100) {
result += (Math.min (lastUsage(),200) - 100) * 0.05;
};
if (lastUsage() > 200) {
result += (lastUsage() - 200) * 0.07;
};
return new Dollars (result);
}
것 다과 같 대될 다.
protected Dollars baseCharge() {
double result = usageInRange(0, 100) * 0.03; //--(1)
result += usageInRange (100,200) - 100) * 0.05;
result += usageInRange (200, Integer.MAX_VALUE) * 0.07;
return new Dollars (result);
}
protected int usageInRange(int start, int end) {
if (lastUsage() > start) return Math.min(lastUsage(),end) - start;
else return 0;
}
"MatrinFowler 들 lastUsage()가 0 값 대 동는것 (드를 보고 면 그렇다) 당 냐?" 라고 를 기는 모르만, Refactoring 결같 구던 "를 명게"라는 부 Refactoring라는 구 끼맞다보 를 명게 결과를 낳것 같다. (망류)
(1) 드는 래럼 그대로 두나, usageInRange(Integer.MIN_VALUE, 100)로 는게 맞 듯 다.
만 것 방뿐, 다. lastUsage() 값 Integer.MIN_VALUE 나, Integer.MAX_VALUE 라면? (런 결 날 다고 담 는가?)
--
- 드 가 렸느냐 대 검 - 만 로그램 내 바가 맞는 대 검 UnitTest Code 로 기는게 나 것 같다고 각 드. 글 내 결국 Context 내 까. 가 된다면 Test Code 는 겠. (기 ''는 각 모 input 대 output 로 바꿔 각 듯)
- 드로 느냐 - 더 게 맞게 Refactoring 되 것 바로 Raise 긴 만. 그리 는 닌듯 다. usageInRange 로 빼내기 부러 반 공 만들다고 까. 그 덕 드 만로 뜻 기가 모다는 부는 동감.
- Refactoring Motivation - Pattern Refactoring 'Motivation' 부 . , 무 러러게 드를 는가다. Parameterize Method 는 'couple of methods that do similar things but vary depending on a few values' 대 리. , 는 메드들긴 데 부 값들 는 드들 대는, 그 게 는 값들 parameter 로 게끔 고, 같 는 부 대 묶로 복 고, 복 될 부들 록 는 것겠. --
글 문라기보다는 과 듯 다.
그 다.
리링 드 부 동 바꾸 면 내부 구를 변는 것 말다. 기 "부 동" 다. 는 "부 동" "미는/는 부 동"로 봅다 -- 리겐 드 가 궁극 고 그 드가 드러내는 "" 궁극기 때문.
그렇다면, 모든 공 되 는 것 닙다. 래 드 가 디를 "게" 낸 것고, 기부 미 공 나, 늘려다.
만 런 논를 떠나 대 리링 는가 각볼 가 겠다. 리는 리링 "리링라는 것 다 그르다"를 따기 는 것 고, 리 로그래밍 되기 다.
리링라는 때는 논리로 나 린 부 내려고 노력는 것보다, 나게 되면 고 그렇 다면 나 기는 것 "로그래머"게 득 되는 듯 다.
물론, 론 공부는 게는 다르겠. 만, 군가 말듯 "벽 론" 는 가가 기 련다. 는 리링 "벽 론"보다 " 론" 다.
ps. 말 모든 공/기가 고대로 되는 리링 다. 가 대 Extract a Method 모든 경 동 동 를 보 는 다. 1+2가 2+1과 같 다고 말 다. 만 리게 미는 내 로 같다고 말 다 -- 물론 따라 를 구 겠만, 답 1+2, 2+1 느 것 를 고민 는 겠.
~cpp
> { Refactoring(by Martin Fowler) 못된 refactoring }
> { (guest), }
[snip]
>
>
> (1) 드는 래럼 그대로 두나, usageInRange(Integer.MIN_VALUE, 100)로
> 는게 맞 듯 다.
>
> 만 것 방뿐, 다.
>
> lastUsage() 값 Integer.MIN_VALUE 나, Integer.MAX_VALUE 라면?
> (런 결 날 다고 담 는가?)
>
리겐 로그램 (correctness) 다. 것 UnitTest나 Eiffel 같 DBC 로 당 까 보 가능 다.
그 다 로 리링 따 가 다. 린/릴 는 로그램 "게 리링"면 린/릴 는 로그램 나다.
-- 김









