-
Notifications
You must be signed in to change notification settings - Fork 0
java_refactoring_1
Kyusung, Hwang edited this page Oct 3, 2019
·
1 revision
- ๋ฆฌํฉํ ๋ง ์์
- ๋ฆฌํฉํ ๋ง ์์
- ๋ฉ์๋ ์ ๋ฆฌ - ๋ฉ์๋ ์ถ์ถ (Extract Method)
- ๋ฉ์๋ ์ ๋ฆฌ - ๋ฉ์๋ ๋ด์ฉ ์ง์ ์ฝ์ (Inline Method)
ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ผ ํ๋๋ฐ ์ฝ๋ ๊ตฌ์กฐ๊ฐ ์กฐ์กํด์ ๊ทธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ํ๋ค๋ค๋ฉด, ์ฐ์ ๋ฆฌํฉํ ๋ง์ ์ค์ํด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ํ ๊ทธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์.
๋ฆฌํฉํ ๋งํ๊ธฐ ์ ์ ๋ฐ๋์ ์ ๋ขฐ๋ ๋์ ํ ์คํธ ์ค์ํธ๊ฐ ์ค๋น๋๋์ง ํ์ธํ์, ์ด ํ ์คํธ๋ค์ ๋ฐ๋์ ์์ฒด๊ฒ์ฌ๊ฐ ๋๊ฒ ์์ฑํ๋ค.
- ์์ฝ
- ์ด๋ค ์ฝ๋๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด๋ ๋๊ฒ ๋ค๊ณ ํ๋จ๋ ๋, ์ฝ๋๋ฅผ ๋นผ๋ด์ด ๋ชฉ์ ์ ์ ๋ํ๋ด๋ ์ง๊ด์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋ง๋ค์.
- ๋๊ธฐ
- ๋ฉ์๋๊ฐ ๋๋ฌด ๊ธธ๊ฑฐ๋ ์ฝ๋์ ์ฃผ์์ ๋ฌ์์ผ๋ง์๋๋ฅผ ์ดํดํ ์ ์์ ๋
- ๋ฐฉ๋ฒ
- ๋ชฉ์ ์ ๋ถํฉํ๋ ์ ๋ฉ์๋ ์์ฑ, ์๋ฆฌ๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ์ด๋ฆ์ผ๋ก
- ๊ธฐ์กด ๋ฉ์๋์ ๋ชจ๋ ์ง์ญ๋ณ์ ์ฐธ์กฐ๋ฅผ ์ฐพ๊ณ , ์ ๋ฉ์๋์ ์ง์ญ๋ณ์๋ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ
- ์ถ์ถ ์ฝ๋์ ์ํด ๋ณ๊ฒฝ๋๋ ์ง์ญ๋ณ์ ํ์ , ์ถ์ถ ์ฝ๋๋ฅผ ๋ฉ์๋ ํธ์ถ์ฒ๋ผ ์ทจ๊ธ ๊ฐ๋ฅํ์ง, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ด๋ จ ๋ณ์์ ๋์ ๊ฐ๋ฅํ์ง ํ์
- ๋ ์ด์์ ์ง์ญ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ๋ => ์์๋ณ์ ๋ถ๋ฆฌ ๊ธฐ๋ฒ
- ์์๋ณ์ ์ ๊ฑฐ => ๋ฉ์๋ ํธ์ถ๋ก ์ ํ ๊ธฐ๋ฒ
- ๋นผ๋ธ ์ฝ๋์ ์ง์ญ๋ณ์๋ฅผ ๋์ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ
- ์ปดํ์ผ
- ์๋ณธ ๋ฉ์๋๋ฅผ ์๋ก ์์ฑํ ๋ฉ์๋ ํธ์ถ๋ก ์์
- ์ปดํ์ผ, ํ ์คํธ
- ์์
/* ์ง์ญ๋ณ์ ์ฌ์ฉ ์ํจ **************************/ /* ๋ณ๊ฒฝ ์ */ void printOwing() { Enumeration e = _orders.elements(); double outstanding = 0.0; System.out.println("****************************"); System.out.println("********* ๊ณ ๊ฐ ์ธ์ *********"); System.out.println("****************************"); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); outstanding += each.getAmount(); } System.out.println("๊ณ ๊ฐ๋ช :" + _name); System.out.println("์ธ์์ก:" + outstanding) } /* ๋ณ๊ฒฝ ํ */ void printOwing() { Enumeration e = _orders.elements(); double outstanding = 0.0; printBanner(); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); outstanding += each.getAmount(); } System.out.println("๊ณ ๊ฐ๋ช :" + _name); System.out.println("์ธ์์ก:" + outstanding) } void printBanner() { System.out.println("****************************"); System.out.println("********* ๊ณ ๊ฐ ์ธ์ *********"); System.out.println("****************************"); } /* ์ง์ญ๋ณ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ **************************/ /* ๋ณ๊ฒฝ ์ */ void printOwing() { Enumeration e = _orders.elements(); double outstanding = 0.0; printBanner(); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); outstanding += each.getAmount(); } System.out.println("๊ณ ๊ฐ๋ช :" + _name); System.out.println("์ธ์์ก:" + outstanding) } /* ๋ณ๊ฒฝ ํ */ void printOwing() { Enumeration e = _orders.elements(); double outstanding = 0.0; printBanner(); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); outstanding += each.getAmount(); } printDetails(outstanding); } void printDetails(outstanding) { System.out.println("๊ณ ๊ฐ๋ช :" + _name); System.out.println("์ธ์์ก:" + outstanding) } /* ์ง์ญ๋ณ์๋ฅผ ๋ค์ ๋์ ํ๋ ๊ฒฝ์ฐ **************************/ /* ๋งค๊ฐ๋ณ์๋ก์ ๊ฐ ๋์ ์ ๊ฑฐ ๊ธฐ๋ฒ */ /* ๋ณ๊ฒฝ ์ */ void printOwing() { Enumeration e = _orders.elements(); double outstanding = 0.0; printBanner(); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); outstanding += each.getAmount(); } printDetails(outstanding); } /* ๋ณ๊ฒฝ ํ */ void printOwing() { printBanner(); double outstanding = getOutstanding(); // ๊ณ์ฐ๋ถ๋ถ ์ถ์ถ printDetails(outstanding); } void getOutstanding() { Enumeration e = _orders.elements(); double result = 0.0; // ๋ณ์๋ช ๋ณ๊ฒฝ while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); result += each.getAmount(); } return result; } /* ๋ณต์กํ ๊ณ์ฐ์ ๋๋นํ์ฌ ์ด์ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ */ void printOwing(double previousAmount) { printBanner(); double outstanding = getOutstanding(previousAmount * 1.2); printDetails(outstanding); } void getOutstanding(double initialValue) { double result = initialValue; // ์ด๊ธฐํ Enumeration e = _orders.elements(); while (e.hasMoreElement()) { Order each = (Order) e.nextElement(); result += each.getAmount(); } return result; }
- ๋ค๋ฅธ ์ํฉ์์?
- ๋ณ์๋ฅผ ๋๊ฐ ์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ
- ๋ค๋ฅธ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๋นผ๋ด์ ๋ฉ์๋๋ฅผ ์์ฑํ์.
- ์์๋ณ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ
- ์์๋ณ์๋ฅผ ๋ฉ์๋ ํธ์ถ๋ก ์ ํ ๊ธฐ๋ฒ
- ๋ฉ์๋ ์ถ์ถ์ด ํ๋ ๊ฒฝ์ฐ
- ๋ฉ์๋ ๊ฐ์ฒด๋ก ์ ํ ๊ธฐ๋ฒ
- ๋ณ์๋ฅผ ๋๊ฐ ์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ
-
์์ฝ
- ๋ฉ์๋ ๊ธฐ๋ฅ์ด ๋๋ฌด ๋จ์ํด์ ๋ฉ์๋๋ช ๋ง ๋ด๋ ๋๋ฌด ๋ปํ ๋, ๊ทธ ๋ฉ์๋์ ๊ธฐ๋ฅ์ ํธ์ถํ๋ ๋ฉ์๋์ ๋ฃ์ด๋ฒ๋ฆฌ๊ณ ๊ทธ ๋ฉ์๋๋ ์ญ์ ํ์.
-
๋๊ธฐ
- ๋ฆฌํฉํ ๋ง์ ํต์ฌ์ ์๋ํ ๊ธฐ๋ฅ์ ํ๋์ ํ์ ํ ์ ์๋ ์ง๊ด์ ์ธ ๋ฉ์๋๋ช ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ๋ ๊ฒ. ๊ฐํน ๋ฉ์๋ ๊ธฐ๋ฅ์ด ์ง๋์น๊ฒ ๋จ์ํ ๋๋ ๋ฉ์๋๋ฅผ ์์ ์.
- ๊ณผ๋คํ ์ธ๋ค์ด๋ ์ ๊ณผ ๋์์ ๋ชจ๋ ๋ฉ์๋๊ฐ ๋ค๋ฅธ ๋ฉ์๋์ ๋จ์ํ ์์์ ํ๊ณ ์์ด์ ์ฝ๋๊ฐ ์ง๋์น๊ฒ ๋ณต์กํ ๋ ์ฃผ๋ก ๋ฉ์๋ ๋ด์ฉ ์ง์ ์ฝ์ ์ ์ค์ํ๋ค.
-
๋ฐฉ๋ฒ
- ๋ฉ์๋๊ฐ ์ฌ์ ์๋์ด ์์ง ์์์ง ํ์ธ
- ๊ทธ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ์ ๊ฒ์
- ๊ฐํธ์ถ ๋ถ๋ถ์ ๋ฉ์๋ ๋ด์ฉ์ผ๋ก ๊ต์ฒด
- ํ ์คํธ๋ฅผ ์ค์
- ๋ฉ์๋ ์ ์ ์ญ์
-
์์
/* ๋ณ๊ฒฝ ์ */ int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; } /* ๋ณ๊ฒฝ ํ */ int getRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; }