More Related Content
Similar to Clean code Chapter.2
Similar to Clean code Chapter.2 (17)
More from HyeonSeok Choi (20)
Clean code Chapter.2
- 1. Clean Code
Ch.2 ์๋ฏธ ์๋ ์ด๋ฆ
chois79
12๋
7์ 22์ผ ์ผ์์ผ
- 2. ์ด์ฅ์์ ๋ค๋ฃฐ ๋ด์ฉ
โข ์ํํธ์จ์ด์์ ์ด๋ฆ์ ์ด๋๋ ์ฐ์ธ๋ค
โข ๋ณ์, ํจ์, ์ธ์, ํด๋์ค, ํ์ผ, package, jar, war ๋ฑ...
โข ์ด๋ฌํ ์ด๋ฆ์ ์ ์ง๋ ๊ฒ์ด ์ค์ํ๋ค
โข ์ดํด๋๋ฅผ ๋์ธ๋ค.
โข ์ด๋ฆ์ ์ ์ง๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ?
12๋
7์ 22์ผ ์ผ์์ผ
- 3. ์๋๋ฅผ ๋ถ๋ช
ํ ๋ฐํ๋ผ
โข ์๋๊ฐ ๋ถ๋ช
ํ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค
โข ์ข์ ์ด๋ฆ์ ์ง๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ < ์ข์ ์ด๋ฆ์ผ๋ก ์ธํด ์ ์ฝํ๋ ์๊ฐ
โข Why? ์ฝ๋์ ์ดํด์ ๋ณ๊ฒฝ์ด ์ฌ์์ง
โข ๋ณ์, ํจ์, ํด๋์ค์ ์ด๋ฆ์ ์ง๋ ๊ฐ์ด๋
โข ๋ค์์ ์ง๋ฌธ์ ๋ตํ ์ ์๋ ์ด๋ฆ์ ์ฌ์ฉ
โข ์กด์ฌ ์ด์ ๋?
โข ์ํ ๊ธฐ๋ฅ์?
โข ์ฌ์ฉ ๋ฐฉ๋ฒ์?
โข ๋ง์ฝ ์ฃผ์์ด ํ์ํ๋ค๋ฉด, ์๋๋ฅผ ์ ๋๋ก ํํํ์ง ๋ชปํ ๊ฒ
12๋
7์ 22์ผ ์ผ์์ผ
- 4. ์๋๋ฅผ ๋ถ๋ช
ํ ๋ฐํ๋ผ - ์์
์๋๊ฐ ๋ชจํธํ ์ฝ๋ ์๋๊ฐ ๋ถ๋ช
ํ ์ฝ๋
int elapsedTimeInDays;
int daysSinceCreation;
int d; // ๊ฒฝ๊ณผ ์๊ฐ (๋จ์: ๋ ์ง ์)
int daysSinceModi๏ฌcation;
int ๏ฌleAgeInDays;
// ๊ฐ ์ด๋ฆ์ด ์ถฉ๋ถํ ์ ๋ณด ์ ๊ณต์ ํ์ง ์์
// ์ด๋ฆ์ ๋ช
ํํ ๋ณ๊ฒฝ
public List<int[]> getThem() { public List<int[]> getFlaggedCells() {
List<int []> list1 = new ArrayList<int []>(); List<int []> ๏ฌaggedCells = new ArrayList<int []>();
for(int [] x: theList) { for(int [] cell: gameBoard) {
if(x[0] == 4) if(cell[STATUS_VALUE] == FLAGGED)
list1.add(x); ๏ฌaggedCells.add(cell);
} }
return list1; return ๏ฌaggedCells;
} }
// int []์ Cell Class๋ก ๋ณํ
public List<Cell> getFlaggedCells() {
List<Cell> ๏ฌaggedCells = new ArrayList<Cell>();
for(Cell cell: gameBoard) {
if(cell.isFlagged())
๏ฌaggedCells.add(cell);
}
return ๏ฌaggedCells;
}
12๋
7์ 22์ผ ์ผ์์ผ
- 5. ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ
โข ํ๋ก๊ทธ๋๋จธ๋ ์ฝ๋์ ๊ทธ๋ฆ๋ ๋จ์๋ฅผ ๋จ๊ฒจ์๋ ์๋๋ค
โข ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์๋ฏธ์ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ์๋จ
โข ex) ์ฌ๋ฌ ๊ณ์ ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์๋ ์ค์ ๋ก List ์ปจํ
์ด๋๊ฐ ์๋๋ฐ accountList ๋ก ์นญํ ๊ฒฝ์ฐ
โข accountGroup, bunchOfAccounts ํน์ Accounts๋ก ๋ช
๋ช
โข ์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์
โข XYZControllerForEf๏ฌcientHandlingOfStrings, XYZControllerForEf๏ฌcientStorageOfString
โข ์ ์ฌํ ๊ฐ๋
์ ์ ์ฌํ ํ๊ธฐ๋ฒ ์ฌ์ฉ
โข ์ํ๋ฒณ์ ์ํ ๋ชจํธ์ฑ ์ฃผ์
โข ์๋ฌธ์ L๊ณผ ์ซ์ 1: l, 1
โข ๋๋ฌธ์ O์ ์ซ์ 0: O, 0
12๋
7์ 22์ผ ์ผ์์ผ
- 6. ์๋ฏธ ์๊ฒ ๊ตฌ๋ถํ๋ผ
โข ์ฝ๋ ์ฌ๋์ด ์ฐจ์ด๋ฅผ ์๋๋ก ์ด๋ฆ์ ์ง์ด๋ผ
โข ์ฐ์๋ ์ซ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ์ง์ง๋ง๋ผ
// a1, a2๋ณด๋ค source, destination ์ ์ฌ์ฉํ์ฌ ๊ฐ๋
์ฑ์ ๋์ผ์ ์์
public static void copyChars(char a1[], char a2[]) {
for(int i = 0; i < a1.length; i++) {
a2[i] = a1[i];
}
}
โข ๋ถ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถํ์ง๋ง๋ผ
โข ex1) Info๋ Data๋ a, an, the์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฏธ๊ฐ ๋ถ๋ถ๋ช
โข ProductInfo, ProductData (์ฐจ์ด์ ์ด ๋ชจํธํจ)
โข ex2) NameString๊ณผ Name, moneyAmount์ money, customerInfo์ customer
12๋
7์ 22์ผ ์ผ์์ผ
- 7. ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
โข ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ์ ์์ฌ ์ํต์ ํ๋ค๊ฒ ํ๋ค
โข ex) genymdhms (generate date, year, month, day, hour, minute, second)
โข ์ด ์ด๋ฆ์ ๋ํด ์ด๋ป๊ฒ ์์ฌ ์ํต ํด์ผ ํ๋๊ฐ?
โข โ์ ์์ด ์ ๋ ์์ด์ทจ ์ ์์คโ, โ์ ์ผ ๋ฌด๋ค ํ์ฆโ
๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ
/* ์ฝ๋๋ฅผ ํตํ ์ง์ ์ธ ๋ํ๊ฐ ๊ฐ๋ฅ */
class DtaRcrd102{
class Customer {
private Date genymdhms;
private Date generationTimestamp;
private Date modymdhms;
private Date modi๏ฌcationTimestamp;
private ๏ฌnal String pszqint = "102";
private ๏ฌnal String recordId = "102";
/* ... */
/* ... */
}
}
12๋
7์ 22์ผ ์ผ์์ผ
- 8. ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
โข ๋ณ์๋ ์์๋ฅผ ์ฝ๋ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ค๋ฉด ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ด ๋ฐ๋์ง
โข ๋ฌธ์ ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฆ๊ณผ ์์๋ ๊ฐ๋
์ฑ์ ๋จ์ด๋จ๋ฆฐ๋ค
โข ๊ฐ๋จํ ๋ฉ์๋์์ ๋ก์ปฌ ๋ณ์๋ง ํ ๋ฌธ์๋ฅผ ์ฌ์ฉ
โข ์ด๋ฆ์ ์๋ฏธ ์๊ฒ ์ง์ผ๋ฉด ํจ์๊ฐ ๊ธธ์ด์ง์ง๋ง ์ฐพ๊ธฐ๊ฐ ์ฝ๋ค
๊ฒ์ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ
int readDaysPerIdealDay = 4;
๏ฌnal int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for(int j = 0; j < 34; j++) {
for(int j = 0; j < NUMBER_OF_TASKS; j++) {
s += (t[j] * 4) / 5;
int realTaskDays = taskEstimate[j] * readDaysPerIdealDay;
}
int realTaskWeeks = (realTaskDays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
12๋
7์ 22์ผ ์ผ์์ผ
- 9. ์ธ์ฝ๋ฉ์ ํผํ๋ผ
โข ๋ถ๋ด์ ๋ํ์ง ์์๋ ์ด๋ฆ์ ์ธ์ฝ๋ฉํ ์ ๋ณด๋ ์์ฃผ ๋ง๋ค
โข ์ธ์ฝ๋ฉํ ์ด๋ฆ์ ๋ฐ์ํ๊ธฐ ์ด๋ ต๋ค
โข ํ๊ฐ๋ฆฌ์ ํ๊ธฐ๋ฒ (์๋์ฐ C API ํ๊ธฐ๋ฒ)
โข ํน์ง: ๋น์ ์ปดํ์ผ๋ฌ๊ฐ ํ์
์ ์ ๊ฒํ์ง ์์๊ธฐ ๋๋ฌธ์ ํ์
์ ๋ณ์๋ช
์ ๋ช
์ํ ํ๊ธฐ๋ฒ
โข ํ๋์ IDE๋ ์ปดํ์ผ ํ์ง ์์๋ ํ์
์ ๊ฐ์งํ๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ๋ฐฉํด๊ฐ ๋จ
โข ํด๋์ค ์ด๋ฆ์ด๋ ํ์
์ ๋ฐ๊พธ๋ ๊ฒ์ด ์ด๋ ต๊ณ , ์ฝ๊ธฐ๋ ์ด๋ ต๋ค
โข ๋ฉค๋ฒ ๋ณ์ ์ ๋์ด
โข ๋ฉค๋ฒ ๋ณ์์ m_ ์ด๋ผ๋ ์ ๋์ด๋ฅผ ๋ถ์ด๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ์์ผ๋ก ํ์ํด ์ฃผ๋ IDE ํด ์ฌ์ฉ
โข ์ธํฐํ์ด์ค ํด๋์ค์ ๊ตฌํ ํด๋์ค
โข ์ธํฐํ์ด์ค์ ์ ๋์ด โIโ๋ฅผ ๋ถ์ด๋ ๊ฒ ๋ณด๋ค ๊ตฌํ ํด๋์ค์ โCโ or ์ ๋ฏธ์ด โImpโ ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ซ๋ค
12๋
7์ 22์ผ ์ผ์์ผ
- 10. ์์ ์ ๊ธฐ์ต๋ ฅ์ ์๋ํ์ง ๋ง๋ผ
โข ๊ธฐ์ต๋ ฅ์ ๋ฏฟ๊ณ , ์๋ฏธ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ง๋ผ
โข ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์ ๋ณ์ ์ด๋ฆ์ ์์ ์ด ์๋ ์ด๋ฆ์ผ๋ก ๋ณํํด์ผ ํ๋ค๋ฉด ๊ทธ ์ด๋ฆ์
๋ฐ๋์งํ์ง ๋ชปํ ๊ฒ์ด๋ค
โข ๋ฌธ์ ์์ญ์ด๋ ํด๋ฒ ์์ญ์์ ์ฌ์ฉํ์ง ์๋ ์ด๋ฆ์ ์ ํํ๊ธฐ ๋๋ฌธ
12๋
7์ 22์ผ ์ผ์์ผ
- 11. ํด๋์ค ์ด๋ฆ
โข ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ฒด ์ด๋ฆ์ ๋ช
์ฌ๋ ๋ช
์ฌ๊ตฌ๊ฐ ์ ํฉ
โข Customer, WikiPage, Account, AddressParser
โข ๋ถ์ฉ์ด๋ ํผํด๋ผ
โข Manager, Processor, Data, Info...
12๋
7์ 22์ผ ์ผ์์ผ
- 12. ๋ฉ์๋ ์ด๋ฆ
โข ๋ฉ์๋ ์ด๋ฆ์ ๋์ฌ๋ ๋์ฌ๊ตฌ๊ฐ ์ ํฉ
โข ex) postPayment, deletePage, save ...
โข ์ ๊ทผ์, ๋ณ๊ฒฝ์, ์กฐ๊ฑด์๋ ์๋ฐ ๋น ํ์ค์ ๋ฐ๋ฅธ ํ๊ธฐ๋ฒ ์ฌ์ฉ
โข get, set, is
โข ์์ฑ์๋ฅผ ์ค๋ณตํด ์ ์ํ ๋๋ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉ
์์ฑ์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋
Complex fulcrmPoint =
Complex fulcrmPoint = new Complex(23.0); Complex.FromReadlNumber(23.0);
12๋
7์ 22์ผ ์ผ์์ผ
- 13. ๊ธฐ๋ฐํ ์ด๋ฆ์ ํผํ๋ผ
โข ์ด๋ฆ์ด ๋๋ฌด ๊ธฐ๋ฐํ๋ฉด ์ ์์ ์๊ฐ์ด ๋น์ทํ ์ฌ๋๋ง ์ด๋ฆ์ ๊ธฐ์ตํ๋ค
โข ์ฌ๋ฏธ๋ ์ด๋ฆ๋ณด๋ค ๋ช
ํํ ์ด๋ฆ์ ์ ํ
12๋
7์ 22์ผ ์ผ์์ผ
- 14. ๊ฐ๋
ํ๋์ ๋จ์ด ํ๋๋ฅผ ์ฌ์ฉํ๋ผ
โข ์ถ์์ ์ธ ๊ฐ๋
ํ๋์ ๋จ์ด ํ๋๋ฅผ ์ ํ
โข ex) fetch, retrieve, get์ ์ ๊ฐ๊ฐ ์ฌ์ฉํ ๊ฒฝ์ฐ ํผ๋์ด ์ด๋
โข ์ผ๊ด์ฑ ์๋ ์ดํ๋ฅผ ์ฌ์ฉํด๋ผ
12๋
7์ 22์ผ ์ผ์์ผ
- 15. ๋ง์ฅ๋์ ํ์ง ๋ง๋ผ
โข ํ ๋จ์ด๋ฅผ ๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ง๋ผ
โข Ex) ๊ธฐ์กด ๊ฐ ๋๊ฐ๋ฅผ ๋ํ๊ฑฐ๋ ์ด์ด์ ์๋ก์ด ๊ฐ์ ๋ง๋๋ ๋ฉ์๋ add๊ฐ ์์
๊ฒฝ์ฐ
โข ์งํฉ์ ๊ฐ ํ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋๋ ๋ฌด์์ผ๋ก ํด์ผํ ๊น?
โข add ๋ณด๋ค insert๋ append๊ฐ ์ ๋น
12๋
7์ 22์ผ ์ผ์์ผ
- 16. ํด๋ฒ ์์ญ์์ ์ฌ์ฉํ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
โข ๊ธฐ์ ์ ์ธ ๊ฐ๋
์๋ ๊ธฐ์ ์ ์ธ ์ด๋ฆ์ด ์ ํฉ
โข ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ ํ๋ก๊ทธ๋๋จธ
โข ๋ฌธ์ ์์ญ์์ ๋ชจ๋ ์ด๋ฆ์ ๊ฐ์ ธ ์ฌ ๊ฒฝ์ฐ ๊ฐ์ ๊ธฐ์กด ๊ฐ๋
๊ณผ ์ถฉ๋์ด ์์ ์
์์
โข EX) AccountVisitor, JobQueue ...
12๋
7์ 22์ผ ์ผ์์ผ
- 17. ๋ฌธ์ ์์ญ๊ณผ ๊ด๋ จ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
โข ์ ์ ํ โํ๋ก๊ทธ๋๋จธ ์ฉ์ดโ๊ฐ ์์ ๊ฒฝ์ฐ ๋ฌธ์ ์์ญ ๋ด์ ์ด๋ฆ์ ์ฌ์ฉ
โข ์ ์ง ๋ณด์์ ์
๋ฌด ์ ๋ฌธ๊ฐ๋ฅผ ํตํด ์๋ฏธ ํ์
๊ฐ๋ฅ
โข ๋ฌธ์ ์์ญ ๊ฐ๋
๊ณผ ๊ด๋ จ ๊น์ ์ฝ๋๋ผ๋ฉด ๋ฌธ์ ์์ญ์ ์ด๋ฆ์ ์ฌ์ฉ
12๋
7์ 22์ผ ์ผ์์ผ
- 18. ์๋ฏธ ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐํ๋ผ
โข ๋๋ค์ ์ด๋ฆ์ ์ค์ค๋ก ์๋ฏธ๊ฐ ๋ถ๋ช
ํ์ง ์๋ค
โข ํด๋์ค, ํจ์, ์ด๋ฆ ๊ณต๊ฐ์ ๋ฃ์ด ๋งฅ๋ฝ์ ๋ถ์ฌ
โข ๋ชจ๋ ๋ฐฉ๋ฒ์ด ์คํจํ๋ฉด, ์ ๋์ด๋ฅผ ์ฌ์ฉํด๋ผ
โข Ex) ๏ฌrstName, lastName, street, houseNumber, city, state, zipcode
โข ์ ์ฒด์ ์ผ๋ก ๋ณด๋ฉด ์ฃผ์๋ฅผ ํํ ํ ๊ฒ์ ์ ์ ์์ง๋ง, ๊ฐ๊ฐ์ ๋ณด์์ ๋๋ ์๋ฏธ๊ฐ ๋ชจํธ
โข addr ์ ๋์ด ์ถ๊ฐ
โข addrFirstName, addrLastName, addrStreet, addrHouseNumber ...
โข But, Address ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ๊ทธ ์์ฑ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์
12๋
7์ 22์ผ ์ผ์์ผ
- 19. ์๋ฏธ ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐํ๋ผ - ์์
๋งฅ๋ฝ์ด ๋ถ๋ถ๋ช
ํ ๋ณ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋งฅ๋ฝ์ ๋ถ๋ช
ํ๊ฒ ํ ๋ณ์
public class GuessStatisticsMessage{
private String number;
private String verb;
private String pluralModi๏ฌer;
public String make(char candidate, int count) {
createPluralDependentMessagePars(count);
return String.format("There %s %s %s %s", verb,
private void printGuessStatistics(char candidate, int count) { number, candidate, pluralModi๏ฌer);
String number; }
String verb; private void createPluralDependentMessagePars(int count) {
String pluralModi๏ฌer; if(count == 0) {
if(count == 0) { thereAreNoLetters();
number = "no"; } else if(count == 1) {
verb = "are"; thereIsOneLetter();
pluralModi๏ฌer = "s"; } else {
} else if(count == 1) { thereAreManyLetters(count);
number = "1"; }
verb = "is"; }
pluralModi๏ฌer = ""; private void thereAreNoLetters() {
} else { number = "no";
number = Integer.toString(count); verb = "are";
verb = "are"; pluralModi๏ฌer = "s";
pluralModi๏ฌer = "s"; }
} private void thereIsOneLetter() {
String guessMessage = String.format("There %s %s %s %s", number = "1";
verb, number, candidate, pluralModi๏ฌer); verb = "is";
print(guessMessage); pluralModi๏ฌer = "";
} }
private void thereAreManyLetters(int count) {
number = Integer.toString(count);
verb = "are";
pluralModi๏ฌer = "s";
}
}
12๋
7์ 22์ผ ์ผ์์ผ
- 20. ๋ถํ์ํ ๋งฅ๋ฝ์ ์์ ๋ผ
โข ์๋ฏธ๊ฐ ๋ถ๋ช
ํ ๊ฒฝ์ฐ์ ์งง์ ์ด๋ฆ์ด ๊ธด ์ด๋ฆ๋ณด๋ค ๋ซ๋ค
โข Ex) ๊ณ ๊ธ ํ๋ฐ์ ์ถฉ์ ์(Gas Station Deluxe) ์์คํ
๋ด์ ํด๋์ค ์ด๋ฆ
โข ๋ชจ๋ ํด๋์ค์ ์ ๋์ด๋ก GSD๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๋์งํ์ง ๋ชปํจ
12๋
7์ 22์ผ ์ผ์์ผ
- 21. ๋ง์น๋ฉด์
โข ์ข์ ์ด๋ฆ์ ์ ํํ๋ ค๋ฉด?
โข ์ค๋ช
ํ๋ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋์ผ ํ๋ค
โข ๋ฌธํ์ ๋ฐฐ๊ฒฝ์ด ๊ฐ์์ผ ํ๋ค
โข ์ข์ ์ด๋ฆ์ ๊ฐ๋
์ฑ์ ๋์ธ๋ค
โข ์์ ์ ๊ธฐ์ต๋ ฅ์ ์์กดํ๊ธฐ ๋ณด๋ค๋ ๋ช
ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํด๋ผ
12๋
7์ 22์ผ ์ผ์์ผ