Recommended
PPTX
2015 ๋๋ ํ๋ก๊ทธ๋๋จธ๋ค ์ปจํผ๋ฐ์ค (11) ์ผ์ฐ์
- ๊ฐ๋
์ฑ์ ๋ํ์ฌ
PPTX
์ฝ๊ธฐ ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ค.
PPTX
DOCX
The Art Of Readable Code.
PDF
The art of readable code ch4 ch8
PPTX
[์คํ๋ง ์คํฐ๋ 1์ผ์ฐจ] ํ
ํ๋ฆฟ
PPTX
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
PPTX
์๋๋ก์ด๋ ํ๋ฉด ์ ํ์ ๋ฐ๋ฅธ ๋์ ์์
PDF
แแ
ตแฐแแ
ต แแ
ฉแแแ
ณแซ แแ
ฉแแ
ณแแ
ก แแ
ฉแแแ
ณแซแแ
ฉแแ
ณแแ
ก
PPTX
แแ
ขแแ
ณแบแแ
กแซ แแ
ฉแแ
ณ (ํด๋ฆฐ ์ฝ๋, Clean Code)
PPTX
PPTX
Code complete chapter 19, 20 organize
PPT
๊ฐ๋จํ๊ฒ ์์๋ณด๋ ์ข์ ์ฝ๋ ์์ํ
PPTX
Google c++codingconvention
PDF
ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ์ง์ผ์ผ ํ ์ฌํญ๋ค
PPTX
C++ ์ฝ๋ฉ์ ์ ์.pptx
PDF
PDF
Clean code 3แแ
กแผ-แแ
กแทแแ
ฎ
PPTX
PPTX
PDF
PPTX
[2012 01 28]cleancode 3์ฅ
PPTX
PPT
PDF
PDF
Effective C++ Chapter 1 Summary
KEY
PPTX
PDF
09 android keyboard & layout
PDF
More Related Content
PPTX
2015 ๋๋ ํ๋ก๊ทธ๋๋จธ๋ค ์ปจํผ๋ฐ์ค (11) ์ผ์ฐ์
- ๊ฐ๋
์ฑ์ ๋ํ์ฌ
PPTX
์ฝ๊ธฐ ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ค.
PPTX
DOCX
The Art Of Readable Code.
PDF
The art of readable code ch4 ch8
PPTX
[์คํ๋ง ์คํฐ๋ 1์ผ์ฐจ] ํ
ํ๋ฆฟ
PPTX
Refactoring Tutorial 1์ฃผ์ฐจ[ Refactoring ๊ฐ์]
PPTX
์๋๋ก์ด๋ ํ๋ฉด ์ ํ์ ๋ฐ๋ฅธ ๋์ ์์
Similar to The art of readable code _ Part I
PDF
แแ
ตแฐแแ
ต แแ
ฉแแแ
ณแซ แแ
ฉแแ
ณแแ
ก แแ
ฉแแแ
ณแซแแ
ฉแแ
ณแแ
ก
PPTX
แแ
ขแแ
ณแบแแ
กแซ แแ
ฉแแ
ณ (ํด๋ฆฐ ์ฝ๋, Clean Code)
PPTX
PPTX
Code complete chapter 19, 20 organize
PPT
๊ฐ๋จํ๊ฒ ์์๋ณด๋ ์ข์ ์ฝ๋ ์์ํ
PPTX
Google c++codingconvention
PDF
ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ์ง์ผ์ผ ํ ์ฌํญ๋ค
PPTX
C++ ์ฝ๋ฉ์ ์ ์.pptx
PDF
PDF
Clean code 3แแ
กแผ-แแ
กแทแแ
ฎ
PPTX
PPTX
PDF
PPTX
[2012 01 28]cleancode 3์ฅ
PPTX
PPT
PDF
PDF
Effective C++ Chapter 1 Summary
KEY
PPTX
More from ์ด์ฉ ์ต
PDF
09 android keyboard & layout
PDF
PDF
20 handler and_async_task
PDF
18 ์๋๋ก์ด๋ ๋ฆฌ์คํธ๋ทฐ_์๋ํฅ์
PDF
PDF
08 fragment ํ๋ธ๋ฆฟ ๋์
PDF
PDF
21 application and_network_status
PDF
PDF
PDF
16 ๋ฐ์ดํฐ ์ ์ฅ๊ณผ ์ฌ์ฉ
PDF
11 tablet ๋์ ๊ฐ์ด๋
PDF
19 ๋๋ง์ view ๋ง๋ค๊ธฐ
PDF
PDF
PDF
PDF
Agile Spirit Base On The Book "Agile Samuari"
PDF
PDF
10 view orientation_change
PDF
NIPA SW Insight Report '13.08
The art of readable code _ Part I 1. The Art of Readable Code
์ธ๋ถ ๋ด์ฉ
The Art of Readable Code ...................................................................................................................... 1
Chapter 1. Code Should Be Easy to Understand ................................................................................... 2
Part I. Surface-Level Improvements ....................................................................................................... 4
Chapter 2. Packing Information into Names ........................................................................................... 4
Chapter 3. Names That Canโt Be Misconstrued ..................................................................................... 9
Chapter 4. Aesthetics (์๋ฆ๋ค์์ ๋ํ์ฌ).......................................................................................... 12
Chapter 5. Knowing What to Comment ................................................................................................ 20
Chapter 6. Making Comments Precise and Compact ........................................................................... 27
2. Chapter 1. Code Should Be Easy to Understand
์ ๋ ์ฝ๋๋ ์ฅ๋จ์ด ์๋ค. ์ด๋ค ๊ฒ์ compact ํด์ ์ข๊ณ , ์ด๋ค ๊ฑด ์น์ํด์ ์ข๊ณ . ์ฐ๋ฆฌ๋ ์ด๋ค ์ฝ๋๋ฅผ ์ง์ผ
ํ ๊น? ์ด๋ฐ ์๊ฐ์ ํ๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๊ทผ๊ฐ์๋ ํ๋์ ๊ธฐ๋ณธ ์ฒ ํ์ ๋ ์ ์๋ค.
Code should be written to minimize the time it would take for someone else to understand it.
๋ฌผ๋ก ์ข์ ์ฝ๋๋ ์ด๋ค ์ธก๋ฉด์์ ์ข์ผ๋์ ๋ฐ๋ผ์ ํ๋จ์ด ๋ฌ๋ผ์ง ์ ์๋ค. ๊ทธ๋ ์ง๋ง ์์์ ์ด์ผ๊ธฐ ํ ๊ฒ์ฒ
๋ผ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ดํดํ๋ ๋ฐ๋ ์๊ฐ์ด ์ ๊ฒ ๊ฑธ๋ฆด ์๋ก ์ข์ง ์๊ฒ ๋๊ฐ? ๋ฌผ๋ก ์์ ํ ์ผ์ด ์์ ์ ๋๋ก ์์ฃผ
์๋ฒฝํ ์ฝ๋๋ฅผ ์ง ๋ค๊ฑฐ๋, ํ์ ๋ด๊ฐ ํด๋น ์ฝ๋๋ฅผ ์ง์ด์ง๊ณ ๊ฐ๋ค๋ฉด์ผ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ด๋ค. ๊ทธ๋ฌ๋ฉด์ผ ๋จ์ด ์ฝ๊ธฐ
์ข๊ฑด ๋ง๊ฑด, ๋ด ๋ง๋๋ก ์ง๊ณ ์ฑ๋ฅ๋ ์ข๊ณ ์ ํํ ๋์ํ๋ฉด ๋๊ฒ ์ง. ๊ทธ๋ ์ง๋ง, ์ฐ๋ฆฌ๋ ๊ทธ๋ ์ง ์์ ์ํฉ์ ์ฒ
ํด ์๋ค.
ํญ์ ๋ค๋ฅธ ์ด๊ฐ ์์
ํ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ฌ์ฉํ๊ณ , ์์ ์ ํด๊ฐ์ผ๋ง ํ๋ ์ํฉ์ ์ฒํด ์๋ ๊ฒ์ด๋ค. ์ด๋ฐ ์ํฉ์
์ ๋ด๊ฐ ํ์ธ์ด ์ฝ๊ธฐ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์, ๋ค๋ฅธ ์ด๋ค์ด ์ฝ๊ธฐ ํธํ ์ฝ๋๋ฅผ ์ง์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ์ ๋ง์ด
๋์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ฝ์ ์ ์์๋ค๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํด๋ฅผ ์ ์ ๋ก ํ๋ค. ์ดํด๋ฅผ ํ๋ค ํจ์ ์ผ๋ง๋ ์ง ์ฝ๋์
์ ๊ฒฐ์ ์ ์ฐพ์์ ์์ ์ ํ ์ ์์ด์ผ ํจ์ ์ด์ผ๊ธฐ ํ๊ธฐ๋ ํ๋ค.
์ด๋ฌํ ์ธก๋ฉด์์ ๋ค์ ์ฝ๋๋ฅผ ๋ด๋ด
์๋ค.
assert((!(bucket = FindBucket(key))) || !bucket->IsOccupied());
์ด ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฌ์ด๊ฐ์? ์ดํดํ๊ธฐ ์ฌ์ด๊ฐ์? ์ด๋ณด๋ค๋ ์๋ ์ฝ๋๊ฐ ์ข์ง ์์๊ฐ์?
bucket = FindBucket(key);
if (bucket != NULL) assert(!bucket->IsOccupied());
ํํ ์ ์ ์ฝ๋๋ฅผ ์์ฑํ๋ผ๊ณ ํฉ๋๋ค. ๋ถ๋ช
๋์ผํ ๋์์ ํ๋ ์ฝ๋๊ฐ 3๋ง ๋ผ์ธ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒ๋ณด๋ค๋ 3์ฒ
๋ผ์ธ์ผ๋ก ๊ตฌ์ฑ๋ ๋ด์ฉ์ด ๋ ์ข๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ ์ง๋ง, ์ดํด๊ฐ ๋ ์ค์ํฉ๋๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ด ์ด์ผ๊ธฐ
3. ํ ์ ์์ต๋๋ค.
"So even though having fewer lines of code is a good goal, minimizing the time-till-understanding is an even
better goal."
์์ ์ธ๊ธํ ์ ์ธ์๋ ์ฌ๋ฌ ๊ฐ์ง ์์๋ค์ด ํน์๋ readableํ ์ฝ๋์ ์์ถฉ๋๋ ๊ฒ์ด ์๋๊ฐ๋ผ๋ ์๊ฐ์ ํ
๋ ์ฌ๋๋ค์ด ์์ต๋๋ค. ์ค์ ๋ก๋ ๊ทธ๋ฌํ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค๊ณ ํ ์ ์์ต๋๋ค. ๊ฐ๋จํ ์๊ฐํด์ ์ด๋ค ์ฑ๋ฅ ์ข
์ ์ฝ๋๊ฐ ์๋๋ฐ, ์ฝ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฌํ ์ฝ๋๊ฐ ์ฝ๊ธฐ๊ฐ ์ด๋ ค์์ผ๋ง ์ฑ๋ฅ์ด ์ข๊ฒ ๋์ฌ ์ ์์๊น์? ์ค
ํ๋ ค ์ฝ๊ธฐ ์ข๊ฒ ๋ง๋๋ ์์
์ ์ฝ๋๋ฅผ ๋์ฑ ๋ฉ์ง ๊ตฌ์กฐ๋ก ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค.
๊ทธ๋ผ ์ง๊ธ๊น์ง ์ด์ผ๊ธฐํ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ญ๊น์? ๋ช ๊ฐ์ง ๊ธฐ์ ๋ณด
๋ค๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํ์ธ์ ์
์ฅ์์ ์ฝ์ด๋ณด๋ ๊ฒ์
๋๋ค. ๋ฌผ๋ก ์ด๋ ๊ฒ ํ ์๋ ์ฝ์ง ์์ต๋๋ค. ์ด๋ฏธ ๋
๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋ค๋ฅธ ์ด ์
์ฅ์์ ์ฝ๋๋ฅผ ์ฝ์ด๋ณด๋ ค๋ ๋ง์ ์์ธ๋ฅผ
๊ฐ์ง๋ ๊ฒ ๋ง์ผ๋ก๋, ์๋ฌด ์๊ฐ ์์ด ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋๋ณด๋ค ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ค ๊ฒ ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๊ฐ
์ง ํ์ผ๋ก ์ฝ๋ ๋ฆฌ๋ทฐ ์๊ฐ์ ๋ด ์ฝ๋์ ๋ํด์ ์๋ฌด๋ฐ ์ธ๊ธ๋ ํ์ง ์๊ณ ๋ค๋ฅธ ์ด์๊ฒ ์ฝ๊ฒ ํด๋ณด์ธ์. ๊ทธ๋ฌ
๋ฉด, ๋์ฑ ๋ช
ํํ ์ฝ๊ธฐ ์ข์ ์ฝ๋์ธ๊ฐ๋ฅผ ์ ์ ์๋ต๋๋ค.
4. Part I. Surface-Level Improvements
๊ฐ์ฅ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ ์ข์ ์ด๋ฆ ์ฐ๊ธฐ, ์ปค๋ฉํธ ์ ๋ฌ๊ธฐ, ์ฝ๋๋ฅผ ์ ์ ํ ํฌ๋งท์ผ๋ก ๋ง์ถฐ์ ๋ง๋ค๊ธฐ์ ๊ฐ์
๋จ์ํ ๋๋ ํ๋ฉด์ ์ธ ๋ถ๋ถ๋ถํฐ ์ด๋ป๊ฒ ํ๋ฉด ์ข์์ง๋ฅผ ์์๊ฐ ๋ด
์๋ค. ์ด๋ฌํ ์์
๋ค์ refactoring์ด๋ ํ๋ก
๊ทธ๋จ ๊ตฌ๋ ๋ฐฉ์์ ๋ฐ๊พธ์ง ์๊ณ ๋ ํ ์ ์๋ ๊ฒ๋ค์ด๋ผ์, ์ฌ์ ์ธ ๋ถ๋ด๋ ๋ง์ด ์์ต๋๋ค. ๋ํ ์๊ฐ๋ ๋ง์ด
๋ค์ง ์๋ ๊ทธ๋ฐ ์์
๋ค์ธ ๋งํผ ์ฝ๊ฒ ํด ๋๊ฐ ์ ์์ต๋๋ค. ์ฝ๊ฒ ํด ๋๊ฐ ์ ์๋ค๊ณ ํจ๊ณผ๊ฐ ์๋ ๊ฒ ์ ๋ ์
๋๋๋ค. ์ด๊ฒ๋ง ํด๋ ์ด๋ง์ด๋งํ ํจ๊ณผ๊ฐ ์์ผ๋, ์์์ ๊ฐ์ง๊ณ ์์๊ฐ ๋ด
์๋ค.
Chapter 2. Packing Information into Names
๋ณ์ ์ด๋ฆ์ ์ด์ฐ ๋ณด๋ฉด ๊ฐ์ฅ ์งง์ comment ์
๋๋ค. ์ฆ, ์ด๋ฆ๋ค๋ง ๋ช
ํํ ๋ช
๋ช
์ ํ๋๋ผ๋, ๊ทธ ์์ฒด๋ก ์ถ๊ฐ
์ ์ธ comment๊ฐ ํ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ํ ์ ์์๊น์?
๊ฐ์ด๋ 1. Choosing Specific Words.
๊ฐ๋ฅํ๋ฉด, ๋๋ฌด ๋ง์ ์๋ฏธ๋ฅผ ๋ค์ ๋จ์ด๋ณด๋ค, ๊ตฌ์ฒด์ ์ธ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ๋
ธ๋ ฅํฉ๋๋ค. ๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ์์ด๊ฐ
์งง์์ ์ด๊ฒ ์ฝ์ง๋ ์์ง๋ง, ๊ทธ๋๋ ํด์ผ๊ฒ ๋ค๊ณ ๋ง์์ ์ก์ผ๋ฉด ๋ ๋์์ง ์ ์์ ๊ฒ์
๋๋ค. ๋๋ฌด ๋ง์ ์๋ฏธ
๋ฅผ ๋ด์์ ์ ๋งคํ ๊ฒฝ์ฐ๋ฅผ ์ดํด ๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์์ ๊ฒ์
๋๋ค.
BinaryTree.Size();
์ฌ๊ธฐ์ Size๋ผ๊ณ ํ๋ ํจ์๊ฐ ๋ญ ์ค๊น์? ์ด๊ฑฐ ์ ๋งคํฉ๋๋ค. ์ ์ง ์ฌ์ด์ฆ์๋ ๋ง์ ๊ฒ๋ค์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ฅผ ๋ค์ด, tree์ depth๋ฅผ ์ค ์๋ ์๊ณ , node ๊ฐ์๋ฅผ ์ค ์๋ ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ค ์๋ ์๊ตฌ์. ์ด๋ ๊ธฐ
๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ถ๊ฐ์ ์ธ ์ฃผ์์ ๋ฌ์ง ์์ผ๋ฉด, ์ ์ ํ ์๋ฏธ๋ฅผ ์ค์ ์ฝ๋ ์์ ๋ด์ผ ์ ์ ์๋ ๊ฒ์
๋๋ค.
์ด๋ฅผ ๊ตฌ์ฒด์ ์ธ ๋จ์ด์ธ BinaryTree.getHeigh() ๋ผ๊ณ ํ๊ฑฐ๋, BinaryTree.getNumNodes()๋ผ๊ณ ๋ช
์ํ๋ฉด ์ฝ๋๋ฅผ
๋ณด์ง ์๊ณ ํด๋น ํจ์์ ๋ํด์ ์ข๋ ๋ช
๋ฃํ๊ฒ ์ฝ์ ์ ์์ต๋๋ค.
๊ฐ์ด๋ 2. Finding More โColorfulโ Words.
์ผ์ ์ํ์์ ์ฌ์ฉ๋๋ ์ ๋ง์ ๋จ์ด๋ค์ด ์์ต๋๋ค. ๊ทธ๋ฌํ ๋จ์ด๋ค์ ์ ํํ ํด๋น ์ํฉ์ ๋ง๋ ๋จ์ด๊ฐ ์
์ผ๋ฉด ๊ทธ๋ฌํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ๋
ธ๋ ฅํฉ๋๋ค. ๊ฐ๋ น make๋ผ๋ ๋จ์ด๋ก ๋ชจ๋ ์์งํด์ ์ธ ์ ์๋ ์ํฉ์ ๋ํด
์ ์๋์ ๊ฐ์ ๋ค์ํ ๋จ์ด๋ค ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
create, set up, build, generate, compose, add, new
์ด๋ ๊ฒ ์ํฉ์ ๋ฐ๋ฅธ ์ข ๋ ๋ช
๋ฃํ ๋จ์ด๊ฐ ์๋ค๋ฉด, ํด๋น ๋จ์ด๋ฅผ ์ฐ๋ ๊ฒ์ ์ฃผ์ ํ์ง ๋ง์ธ์. ์ด๋ฌํ ๊ฐ์ ์
๊ธฐ๋ง ์๊น์ด ์๋ ๋จ์ด๋ ์ข ๋ ์ ํํ ์์ฌ ์ ๋ฌ์ ํ์์
๋๋ค.
๊ฐ์ด๋ 3. Avoid Generic Names Like tmp and retval
์ผ๋ฐ์ ์ผ๋ก ์๋ฌด ์๋ฏธ๊ฐ ์์ด ์์๋ก ์ฌ์ฉ๋๋ ๋ณ์ ๋ช
๋ค์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ tmp, retval๊ณผ ๊ฐ์. ๋ฌผ๋ก
5. ๊ทธ ์์ฒด๋ก ์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋์ ๊ฐ์ด ๊ฐ์ ๊ตํํ๋๋ฐ ์์์ ์ฅ์ ๊ณต๊ฐ์ผ๋ก
์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ๋ก ๊ทธ ๊ฒฝ์ฐ์ด์ฃ .
if (right < left) {
tmp = right;
right = left;
left = tmp;
}
์ด๋ฌํ ๊ฒฝ์ฐ ์ธ์ ์๋ ๊ฒฝ์ฐ๋ ์ด๋ ํ๊ฐ์?
String tmp = user.name();
tmp += " " + user.phone_number();
tmp += " " + user.email();
...
template.set("user_info", tmp);
์ ๊ฒฝ์ฐ์๋ tmp๊ฐ ์์์ฉ์ด ์๋ user_info ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ฒ์ด๊ธฐ์ tmp ๋์ userInfo๋ผ๋ ๋ณ์๋ช
์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์์ ๊ฒ์
๋๋ค. ์ด๋ ๋ ๋ช
๋ฃํ๊ฒ ํํ์ ํด์ฃผ๋ ๊ฒ๊ณผ ํจ๊ป, ์์ ์ ์๋ ์ค์๋ฅผ ๋ฐฉ
์งํ๊ฒ ํด ์ฃผ๊ธฐ ๋๋ฌธ์
๋๋ค. tmp๋ผ๊ณ ํ๋ฉด, ๋ณ๋๋ก ๋ง ๊ทธ๋๋ก ์์ ๋ณ์๋ผ๊ณ ์ด์ผ๊ธฐ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋ค
๋ฅธ ์ฌ๋๋ค์ด ์์๋ก ํด๋น ๋ณ์์ ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ง์ฝ ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ์ ๊ฐ์ด ํน์ ๋ชฉ
์ ์ ๊ฐ์ง ํญ๋ชฉ useInfo๋ผ๊ณ ๋ช
๋ช
ํ๋ฉด, ์ด๋ค ๋๊ฐ userInfo์ ์ฌ์ฉ์ ์ ๋ณด ์๋ ๋ค๋ฅธ ๊ฐ์ ์ค์ ํ๊ฒ ์ต๋๊น.
์ด๋ฌํ ์ธก๋ฉด์์ ์ฐ๋ฆฌ๋ ๋ณดํต loop์ ์ฐ๋ ์์น ํ์์ฉ ๋ณ์๋ค์ ๋ค์ ๋ฐ๋ผ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
for (inti = 0; i<clubs.size(); i++)
for (int j = 0; j < clubs[i].members.size(); j++)
for (int k = 0; k <users.size(); k++)
if (clubs[i].members[k] == users[j])
cout<< "user[" << j << "] is in club[" <<i<< "]" <<endl;
์์ ๊ฐ์ ์ฝ๋ ์ด๋ ํ์ ๊ฐ์? ๋ณ์๋ช
i, j, k ๋ณ ๋ฌธ์ ์์ด ๋ฌด๋ํ๊ฒ ๋ณด์ด์์ฃ ? ๊ทธ๋ฐ๋ฐ, ํ๋ก๊ทธ๋จ ์์ฑํด ๋ณธ
์ฌ๋๋ค์ ๋๋ถ๋ถ ์ด i, j, k ๊ฐ ํผ๋์ ๊ฐ์ ธ๋ค ์ฃผ์ด j ๋์ i๋ฅผ ๊น๋นกํ๊ณ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์์ ๊ฒ์
๋๋ค. ์ด๋ฌํ
๊ฒฝ์ฐ์๋ ์์น ์ง์์๋ผ ๊ฐ๋จํ๊ฒ ์์ ๋ณ์๋ช
์ ์ฐ๋๋ผ๋, ์๋์ ๊ฐ์ด ์กฐ๊ธ ์๋ฏธ๋ฅผ ๋ ํด๋ณผ ์ ์์ต๋๋ค.
club_i, member_j, user_k
์ด๋ ๊ฒ ํ๋ฉด, ์ข ๊ธธ์ด์ง๊ธฐ๋ ํ์ง๋ง, ์ ์ ํ ๋ณ์๋ฅผ ์ ์ ํ ์์น์ ์ฌ์ฉ๋ ์ ์๊ฒ ํด์ฃผ์ด ๋ฒ๊ทธ ์ ๋ฐ์๋ฅผ ์
6. ๊ฑฐํ๋ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ๋ค ์ฃผ๊ธฐ๋ ํฉ๋๋ค.
์ด์ฒ๋ผ, ์ด๋ค ๊ฐ์ ๋ํด์ ์๋ฏธ๊ฐ ์๋ค๋ฉด, ์๋ฏธ๋ฅผ ๊ตฌ๋ถ ์ง์ ์ ์๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ค ์๊ฐ์ ํ ๋ฒ ํด๋ณด์ธ
์. ๊ทธ๋ ๊ฒ ํ ๋ฒ ํ๋ ์๊ฐ์ด ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ข๊ฒ, ๊ทธ๋ฌ๋ฉด์๋ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ ์ ์๊ฒ ํด ์ค๋๋ค.
๊ฐ์ด๋ 4. Prefer Concrete Names over Abstract Names
์ ์ฌํ ํ๋ฆ์ด์ง๋ง, ์ด๋ฆ์๋ ๊ตฌ์ฒด์ ์ธ ๋์์ด ๋ช
์๊ฐ ๋์ด์ผ ํฉ๋๋ค. ๊ฐ๋ น A๋ผ๊ณ ์ด์ผ๊ธฐ๋ฅผ ํ ๋ ์ฝ๋๋ฅผ
์ฝ๋ ์ฌ๋์ ์ฌ๋ฌ ์ํฉ์ ์๊ฐํ๊ฒ ๋๋๋ฐ, ์ค์ ์ฝ๋๋ ํ ๊ฐ์ง ์ํฉ๋ง์ ์ด์ผ๊ธฐ ํ๋ค๋ฉด, ์ด๋ ์ด๋ฆ์ด
abstractํ ๊ฒฝ์ฐ์
๋๋ค. ์๋ฅผ ๋ค์ด์, DISALLOW_EVIL_CONSTRUCTOR๋ผ๋ ์ด๋ฆ์ด ์๋ค๊ณ ์๊ฐํด ๋ด
์๋ค.
์ด๊ฒ ์๋ฏธํ๋ ๊ฒ์ด ๋ญ๊น์? ๋ญ๊ฐ evilํ ์์ฑ์์ผ๊น์? ๊ฒฐ๊ตญ์๋ ์ด๊ฒ ๋ญ ๋ฐฉ์งํ๊ณ ์ถ์ ๊ฒ์ผ๊น์? ์ด๋ฅผ
DISALLOW_COPY_AND_ASSIGN ์ด๋ผ๊ณ ๋ณ๊ฒฝํ๋ฉด ์ด๋ค๊ฐ์? ์๊น ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก ์๋ฏธ๊ฐ ์ ๋ฌ๋๋ ๊ฒ์
์ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๋ชจ๋ ์ด๋ฆ์ abstractํ๋ฉด ๋ฐ๋ก concrete ํ๊ฒ ๋ฐ๊พธ๋๋ก ํฉ์๋ค.
์ด๋ฌํ ๋ช
๋ช
์ ์ต์
์ค์ ์์๋ ์ ์ฉ์ด ๋ฉ๋๋ค. โrun_locally๋ผ๋ ์ต์
์ด ์์ต๋๋ค. ์ด๊ฑธ ์ฒจ ๋ณด๋ ์ฌ๋์ ๋ก์ปฌ
ํ๊ฒฝ์ผ๋ก ๋๋ฆฌ๋๊ฐ ๋ณด๋ค๋ผ๋ ์๊ฐ์ ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ด๋ถ์ ์ผ๋ก๋ ๋ก์ปฌ ํ๊ฒฝ์์ ๊ตฌ๋์ ์ํค๋ฉด์, ์ถ
๊ฐ์ ์ธ debugging ๋ฉ์์ง๋ฅผ ๋จ๊ธฐ๋๋ก ํ๋ ๋ช
๋ น์ด๊ณ , ์ด๋ก ์ธํด์ ์๋๊ฐ ๋๋ ค์ง๋ ํ์์ด ์์ต๋๋ค. ์ฆ ๋ก
์ปฌ์์ ๋๋ฆฌ๋ฉด์๋ ์ ์ต์
์ ์ฃผ์ง ์๊ณ ๋๋ฆด ์๋ ์๊ณ , ๋ ๋น ๋ฅด๊ฒ ๋๊ฒ ๋๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ์๊ณ ์๋ ์ฒ
์ ์ต์
์์ฑ์๋ ์ฑ๋ฅ ํ
์คํธ๋ฅผ ํ ๋์๋ ์ด ์ต์
์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋จ๊น
์? ์ด๋ฌํ ๋ฐฐ๊ฒฝ ์ํฉ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์, ๋ก์ปฌ ํ๊ฒฝ์์๋ ์ฃฝ์ผ๋ ์ฌ๋ ์ ์ต์
์ผ๋ก ๋๋ฆฌ๊ฒ ์ฃ . ์ด๋ฌํ ๋ถ์์ฉ
์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ข ๋ ๊ตฌ์ฒด์ ์ธ ์ํฉ์ ๋ด์์ ๋ช
๋ช
ํด๋ด
์๋ค. โrun_locally ์ต์
์ด๋ฆ์ โextra_logging์ด
๋ผ๊ณ ๋ฐ๊พธ๋ฉด ์ด๋ค๊ฐ์? ์ข ๋ ๋ช
๋ฃํด์ง๊ณ , ์ถ๊ฐ์ ์ธ ๋ฐฐ๊ฒฝ ์ค๋ช
์์ด ์ต์
์ ์ ์ ํ ์ฌ์ฉํ ์ ์์ ๊ฒ์ ๊ธฐ
๋ํ ์ ์์ต๋๋ค.
์ด ๋, ์ด๋ค ์ด๋ ๋ง ๊ทธ๋๋ก ๋ก์ปฌ ํ๊ฒฝ์ ๋ง์ถฐ์ ๊ตฌ๋ํ๋, DB๋ฅผ local DB๋ฅผ ์ฌ์ฉํด์ ๊ตฌ๋ํ๊ฒ ํด์ผ ํ๋
์ต์
์ด๋ฉด ์ด๋ป๊ฒ ํ ์ง ์๋ฌธ์ ๊ฐ์ง ์๋ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์์์จ ๊ฒ๊ณผ ๊ฐ์ด ์ํฉ์ ๊ตฌ
์ฒด์ ์ผ๋ก ๋ช
์ํ๋ ์ต์
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. โuser_local_database๋ผ๋ ์ต์
์ด๋ฆ์ ์ฌ์ฉํ ์ ์๊ฒ ์ฃ . ์ฐพ์ผ
๋ ค ํ๋ฉด ๊ตฌ์ฒด์ ์ธ ์ด๋ฆ์ ์ผ๋ง๋ ์ง ์ฐพ์ ์ ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ๋ชจํธํจ์ ์ฃผ๋ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก
ํ๋ ์ธ์์ธ ๊ฒ์
๋๋ค.
๊ฐ์ด๋ 5. Attaching Extra Information to a Name
๋ณ์ ์ด๋ฆ์ ์ด๋ค ์ฃผ์๋ณด๋ค ํจ๊ณผ์ ์ธ ์ฃผ์์ด๋ฉฐ, ๊ทธ๋ ๊ธฐ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ฆ ์ฐ๋ฆฌ๋ ์ต
๋ํ ์์ถ์ ํด์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ฅผ ๋ณ์์ ๋ฃ์ ์ ์๋๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด์ ์๊ฐํด ๋ด
์๋ค.
private String id; // hexadecimal format. For example, โaf84ef845cd8โ
id๋ผ๋ ๋ณ์๊ฐ ์๋๋ฐ, ์ด๊ฒ hexa ํ ๊ฐ์ธ๊ฒ ๋ฌด์ฒ ์ค์ํ๊ฐ ๋ด
๋๋ค. ์ฃผ์์ ๋ง๊ตฌ๋ง๊ตฌ ์จ ๋์ ๊ฑธ ๋ณด๋. ๊ณฐ๊ณฐ
ํ ์๊ฐํ๋ ์ผ๋ฐ์ ์ธ id๊ฐ ์๋๋ฐ, ์ด๋ฅผ ์ฌ์ฉํ๋ ์
์ฅ์์๋ ์ฃผ์์ ๋ณด์ง ์์ผ๋ฉด ์ด๊ฒ hexaํ ๊ฐ์ธ์ง ์
ํ ๋ชจ๋ฅด๊ฒ ๊ตฐ์. ๊ทธ๋ผ ์ฐ๋ฆฌ ์ด๊ฑธ ์๋์ ๊ฐ์ด ๋ง ๊ทธ๋๋ก ๋ณ์ ์ด๋ฆ์ผ๋ก ์ฃผ์์ ๋ฌ์๋ด
์๋ค.
private String hex_id;
7. ์ด๋ ๊ฒ ํ๋ฉด ์ด ์์ฒด๋ก ๋ช
๋ฃํด์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ณ์๊ฐ ์ด๋์์ ์ฌ์ฉ์ด ๋๋๋ผ๋, ๋ชจ๋๋ค ์ด๊ฒ hexํ ๊ฐ
์ด๊ตฌ๋๋ผ๊ณ ๋ฐ๋ก ์ ์ ์์ ๊ฒ์
๋๋ค. ์ด๋ฐ ์ ์ฌํ ์ฌ๋ก๋ค์ด ๋ง์ด ์์ต๋๋ค. ๊ฐ๋ น ์๊ฐ ๋ฐ์ดํฐ ๊ฒฝ์ฐ์ ๊ฐ์ด
๋จ์๋ค์ด ์๋ ๊ฒฝ์ฐ๋ค์ด ์์ฃ . ์ด๋ฌํ ๊ฒฝ์ฐ์๋ sec ๊ธฐ์ค์ธ์ง ms ๊ธฐ์ค์ธ์ง๋ฅผ ๋ณ์์ ์ถ๊ฐํด๋๋ฉด ๋ช
๋ฃํด์ง
๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฌ์ค ์ด๋ ๊ฒ ์ ๋์ด ์์ด์, ์ฝ๋๋ฅผ ๋ค์ ๊ฑฐ๊พธ๋ก ์ฌ๋ผ๊ฐ๋ฉด์ ๋ณ์ ๋จ์๋ฅผ ์ฐพ์๋ ๊ฒฝํ๋ค
์ด ์์ง ์๋์? ์ด๋ฌํ ๋์ ์์ฒด๊ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ฝ๋, ์ฝ๊ธฐ ์ด๋ ค์ด ์ฝ๋์์ ๋ํ๋
๋๋ค. ์ด๋ฐ ์ ์ฌํ
์ฌ๋ก๋ก์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ๋ง์ต๋๋ค. ์ด๋ค String์ด ์ธ์ฝ๋ฉ ํ์
์ด ์๋ ๊ฒฝ์ฐ์, ์ด๋ฐ ์ ๋ณด๋ ๋ณ์์ ๋
น์ผ ์ ์
๋ ๊ฒ์ด์ฃ . ์ด๋ ๊ฒ ๋ช
๋ช
ํ ๊ฒ๋ค์ ๋ํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
delay๏ delay_secs, size๏ size_mb, password ๏ plaintext_password, html ๏ html_utf8, data ๏ data_urlenc
๊ณจ์๋ ์ด๊ฒ๋๋ค. ๋ณ์๋ช
์ ์ฝ๋ฉํธ๋ฅผ ๋
น์ฌ๋ฒ๋ ค๋ผ!
๊ฐ์ด๋ 6. How Long Should a Name Be?
์์ ์ฐ๋ฆฌ๋ ๋ณ์๋ช
์ ์ฝ๋ฉํธ๋ฅผ ๋
น์ด๋ ๊ฒ์ ์ด์ผ๊ธฐ ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋ณด๋ฉด, ์์ฒญ ๊ธธ์ด์ง๋ ๋ณ์๋ช
๋ ํ์ด๋
์ ์๋ค. ์๋ฅผ ๋ค์ด์ newNavigationControllerWrappingViewControllerForDataSourceOfClass ๋ผ๋ ์ด๋ฆ๊ณผ ๊ฐ
์ด. ์ด๊ฑด ๋๊ฐ ๋ด๋ ๊ณผํ์ง ์๋๊ฐ? ๊ทธ๋ ๋ค๊ณ ํด์ ์งง๊ฒ m ์ด๋ผ๊ณ ํํ๋๋ ๊ฒ์ ์ดํด๋ฅผ ํ๊ฒ ํ๋ค๊ฒ ํ๋ค.
๊ทธ๋ผ ์ด์ฉ๋ ๋ง์ธ๊ฐ? ๋ต์ ์ ๋นํ ๋ผ๊ณ ๋งํ ์ ์๋ค.
๊ทธ๋๋ ๊ฐ์ด๋๋ ์์ผ๋ฉด, ์ ์ฉํ๊ธฐ ํธํ ํฐ์ด๋, ๊ฐ๋จํ ๊ฐ์ด๋๋ฅผ ์ ํด๋ด
๋๋ค. ์ฌ์ฉ๋๋ ๋ณ์๋ ํจ์๊ฐ ์ฌ์ฉ
๋๋ ๋ฒ์์ ํฌ๊ธฐ์ ๋ณ์ ๊ธธ์ด๋ ๋น๋กํ๋ฉด ์ข์ต๋๋ค. ์ด๊ฒ ๋ฌด์จ ๋ง์ธ๊ฐ ํ๋ฉด, ๋ฐ๋ก ์ดํด๊ฐ ๋๋ ๊ทธ ๊ธฐ์์
์์๋ด๋ ๊ฒ์ด ๋ฐ๋ก ๊ฐ๋ฅํ ์ ๋ ์์ค์ด๋ฉด, ๋ณ์ ๋ช
์ ์งง๊ฒ ํด๋ ์ข๋ค๋ ๊ฒ์ด์ฃ . ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ๊ฒฝ
์ฐ๊ฐ ์์ต๋๋ค.
if (debug) {
Map<String, int> m;
lookUpNamesNumbers(&m);
print(m);
}
์์ ๊ฐ์ ๊ฒฝ์ฐ์ m์ด๋ผ๊ณ ํ๊ธฐํด๋ ์งง์ ๋ฒ์์์ ์ดํด๋๊ณ ์ฌ์ฉ๋๋๊น ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง
์ฝ LookUpManager.m; ์ด๋ฌํ ์ฝ๋๊ฐ ์๋ค๊ณ ์๊ฐํด ๋ด
๋๋ค. ์ด๊ฑฐ ์ดํด๊ฐ ๋์๋์? ์ดํดํ๊ธฐ ์ํด์๋
LookUpManager ํด๋์ค์์ m์ด๋ผ๋ ๋ณ์์ ๋ํ ์ฃผ์์ ์ฐพ์์ผ ๊ฒ ์ง์. ์ด๋ฐ ์ธก๋ฉด์์ ๊ฐ์ด๋๋ผ๊ณ ์๊ฐํ
์ ์์ต๋๋ค.
์ด ์ธ์ ํํ ๋์ค๋ ์ด์ ์ค ํ๋๊ฐ ์ฝ์ด์
๋๋ค. BEPManager๋ผ๋ ํด๋์ค ์ด๋ฆ์ด ์์ต๋๋ค. ์ดํด๊ฐ ๊ฐ์๋
์? ์ดํด๊ฐ ๋์ง ์์ผ์์ฃ . BackEndProcessManager๋ผ๊ณ ํ๋ฉด ์ด๋ค๊ฐ์? ์ดํด๊ฐ ๋์์ฃ . ์ด๊ฒ ๋ฐ๋ก ํต์ฌ์
๋๋ค. ๋ค๋ฅธ ์ด๊ฐ ๋ด์ ์ดํด๊ฐ ํ๋ค ์ ๋์ ์ฝ์ด๋ ์ฌ์ฉ์ ํผํ์ธ์. ์ฌ๊ธฐ์ ๋ค๋ฅธ ์ด๋ผ๊ณ ํ๋ฉด ์ธ๋ถ ๊ฐ๋ฐํ์
์ ์ ๊ท๋ก ์ด๋ํด ์จ ๊ฐ๋ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐํ์๋ฉด ๋ ๊ฒ ์
๋๋ค. ๋ฌผ๋ก ์ด๋ฐ ๊ด์ ์์ ๋ณด๋ฉด, ์คํ๋ ค,
readDocument๋ผ๊ณ ์ ๋ ๊ฒ๋ณด๋ค๋ readDoc๋ผ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์
๋๋ค.
8. ์ด์ฒ๋ผ, ๊ธธ์ด์ ๋ํ ์ ์ฝ์ ๋น์์์ ์ผ๋ก ๊ธธ์ด์ง๋ ๊ฒ์ ๊ฒฝ๊ณํ๋ฉด์๋, ๋ค๋ฅธ ์ฌ๋์ด ๋ด์ ํผ๋์ด ๋์ง ์์
์์ค์์๋ ์งง๊ฒ ์์ฑํ๋๋ก ํ๋ ๊ฒ์ด ์ฝ๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ธธ์ด ๋ ๊ฒ์
๋๋ค.
๊ฐ์ด๋ 7. Use Name Formatting to Convey Meaning
์ด๋ฆ์ ํ๋์ ์ฝ๋ฉํธ๋ผ๋ ๊ด์ ์ ํฌ๋งท์ ํ์ฉํด์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ ํด๋
์ค ๋ฉค๋ฒ ๋ณ์์ ๋ํด์ m_pageHeight ์ ๊ฐ์ด โm_โ๋ฅผ ์์ ๋ถ์ธ๋ค๊ณ ํ๋ฉด, ์ด ์์ฒด๋ก ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๋ฌ
ํ๊ฒ ๋ฉ๋๋ค. ๋ํ ์ด๋ฌํ ์ผํ์ผ๋ก ์์ ๊ฐ์ ๋ํด์๋ ๋ชจ๋ ๊ฐ์ ๋๋ฌธ์๋ก ์ฐ๊ฒ ํ๋ ๊ฒ๋ ํ์ฉ์ ํ ์
์
๋๋ค. ์ธ๋์ค์ฝ์ด(_), ๋์๋ฌธ์ ๋ฐ ๊ธฐํ ๊ธฐํธ๋ค์ ํ์ฉํด์ ์ถ๊ฐ์ ์ธ ์ ๋ณด ์ ๋ฌ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋
๊ฒ ํฌ๋งท์ ํตํด์ ์ ๋ณด ์ ๋ฌํ๋๋ฐ ์์ด์ ์ค์ํ ์ ์ด ์์ต๋๋ค.
โ์ด๋ ํ ํฌ๋งท์ ์ฌ์ฉํด์ ์ ๋ณด ์ ๋ฌํ๋ ๊ฒ์ ๊ฒฐ์ ํด์ผ ํ ์ฌํญ์
๋๋ค๋ง, ๊ฒฐ์ ์ ํ๋ค๋ฉด ์ ์ฒด ํ๋ก์ ํธ์ ๋
ํด์ ์ผ๊ด์ฑ ์๊ฒ ์ ์ฉ์ด ๋์ด์ผ ํฉ๋๋ค.โ
9. Chapter 3. Names That Canโt Be Misconstrued
์์ ์ฅ์์ ์ด๋ฆ๋ค์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉํฅ์ผ๋ก ์ด์ผ๊ธฐ๋ฅผ ํ๋ค๋ฉด, ์ด์ ๋ ์คํด๊ฐ ์์ง ์์ ์ ์๋๋ก ์ด
๋ฆ์ ์ฌ์ฉํ์๋ ๊ด์ ์์ ์ด์ผ๊ธฐ๋ฅผ ํ์ด๋ด
๋๋ค. ์ด๋ ๊ฒ ํ๋ ๊ฐ์ฅ ์ค์ํ ๊ธธ์ ์์ ์ด ๋ง๋ ์ด๋ฆ์ ๋ํด์
โ์ด๋ป๊ฒ ์คํดํ ์ ์์๊น?โ๋ก ์๋ฌธ์ ํด๋ณด๋ ๊ฒ ์
๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ์์ง์ ์ต์ํ์ง ์๊ธฐ ๋
๋ฌธ์ ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ํตํด์ ํ๋ ํ๋ ์คํด๋ฅผ ํ ์ฌ์ง๊ฐ ์ด๋์ ์๋์ง ์์๋ณด๊ณ , ์ด๋ฅผ ํตํด์ ์ฐ๋ฆฌ๊ฐ ๋ง๋
๋ ์ด๋ฆ์๋ ์คํด ์ฌ์ง๋ฅผ ์์จ ์ ์๋๋ก ์กฐ์ฌํฉ๋๋ค.
์. Filter๋ผ๋ ์ด๋ฆ์ ํจ์.
Results = Database.all_objects.filter(โyear <= 2011โ);
์์ ๊ฐ์ ๋ฌธ์ฅ์ด ์์ ๋, Results๋ ์ด๋ค ๊ฐ์ผ๊น์? 2011 ์ดํ๋ ๋์๋ค ๋ชจ์์ผ๊น์? ์๋๋ฉด 2011 ์ดํ
๋์์ ์ ๊ฑฐํ๊ณ ๋๋จธ์ง๋ค ๋ชจ์์ผ๊น์? ์ด๊ฒ ๋ฐ๋ก ์คํด ์ฌ์ง์
๋๋ค.
์ด๋ ๊ฒ ์ด์ค์ ํด์์ด ๋ ์ ์๋ ํจ์ ์ด๋ฆ ๋ณด๋ค๋ select ๋๋ exclude์ ๊ฐ์ด ์คํด ์ฌ์ง๊ฐ ์ ์ ์ด๋ฆ์
์ฌ์ฉํ ์ ์์ ๊ฒ์
๋๋ค.
Prefer min and max for (Inclusive) Limits
์ด๋ฒ์๋ ํํ ์ ํ๋ ํ๊ณ๊ฐ์ ๋ํ ์คํด ์ฌ์ง ์๋ ๋ถ๋ถ๋ค์ ๋ํด์, ์์๋ด
์๋ค. ์๋ฅผ ๋ค์ด์ ์ฐ๋ฆฌ๋ ์ฌ
๋์ด ์ผํ์ ํ ๋, ํ ๋ฒ์ 10๊ฐ ๊น์ง๋ง ์ด ์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค๊ณ ํด๋ด
์๋ค. ์ด๋ฌํ ๊ฒ์ ์ฝ๋
๋ฅผ ์ง๋ฉด ์ด๋ ๊ฒ ์ง๋ ์ฌ๋์ด ์๊ฒ ์ง์.
CART_TOO_BIG_LIMIT = 10
if shopping_cart.num_items() >= CART_TOO_BIG_LIMIT:
Error(โToo many items in cartโ)
์ด๋ฌํ ์ฝ๋ ์ด๋ ํ๊ฐ์? ์์ ์ด๋ค ์ํฉ์ ๋ํ ์ฝ๋๋ผ๋ ์ค๋ช
์ด ์์๋ค๋ผ๊ณ ์๊ฐํ๊ณ , ์ฝ๋๋ฅผ ์ฐฌ์ฐฌํ ๋ด
๋ณด๋ฉด ์ด๋ค๊ฐ์? ์ด๊ฒ 10์ ํฌํจํ๋๊ฒ ๋ง๋ ๊ฒ์ธ๊ฐ ์๋๊ฐ ํผ๋์ค๋ฝ์ง ์์๊ฐ์? ์คํ์ด ๋ญ์ง ๋ค์ ํ ๋ฒ
์คํ์ ์ฐพ์๋ณผ ๊ฒ ๊ฐ์ง ์์๊ฐ์? ์ด๋ฌํ ํผ๋์ ์์ธ์๋ CART_TOO_BIG_LIMIT๋ผ๋ ๋ณ์๋ช
์ ์์ต๋๋ค.
์ด ๋ณ์ ๋ช
๋ง ๋ณด๋ฉด ์ด ๊ฐ์ ์ง์ ๋ ๊ฐ์ด ํฌํจ๋ ์ ์๋ ์ต๋ ๊ฐ์ธ์ง ์๋๋ฉด, ํฌํจ๋์ง ์๋ ๊ฒฝ์ฐ์ธ์ง ๋ช
ํ
ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ฐ ๋ฉด์์ ๋ณด๋ฉด, ์ ์ง ์ฝ๋๋ง ๋ณด๋ฉด ๋ง๋ ๊ฒ ๊ฐ์ง๋ง, ์คํ๊ณผ๋ ๋ค๋ฅธ ์ฝ๋์ธ ๊ฒ์ด์ฃ .
์ด๋ฅผ ์๋์ ๊ฐ์ด ๊ณ ์น๋ฉด ์ดํด๊ฐ ์ข ๋ ๋ช
๋ฃํด ์ง ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
MAX_ITEMS_IN_CART = 10
if shopping_cart.num_items() > MAX_ITEMS_IN_CART:
Error(โToo many items in cartโ)
์ด์ฒ๋ผ ํ๊ณ๊ฐ์ด ๋ถ๋ช
ํํ ๊ฒฝ์ฐ์๋ MAX๋ MIN์ด๋ผ๋ ๊ฐ์ ์ฌ์ฉํด์ ํฌํจํ๋ ๊ฒ์ ๋ช
๋ฃํ๊ฒ ํ ์ ์์ต
๋๋ค. ๋ฌผ๋ก ํน์๋ ์ฃผ์์ ์ ๋ฌ๋ฉด ๋์ง ์๊ฒ ๋๋ผ๊ณ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ฐ์ ๋ช
๋ฃํ๊ฒ ์ด๋ฆ์ ์ง์ด๋
๋ฉด ๊ตฌ์ง ์ฃผ์๊น์ง ์ ์ฐพ์๋ด๋ ์ดํด๊ฐ ๋ ์ ์๋ค๋ฉด, ๊ทธ ๊ฒ์ผ๋ก ์กฑํ์ง ์๋์. ์ด๋ฐ ์ฉ๋๋ก ์ฐ์ด๋ ์ข์ ๋จ
10. ์ด๋ค๋ก์ first, last์ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ด์ผ๊ธฐํ๊ณ ์ ํ๋ ๊ฒ์ ์ด๋ค ๋จ์ด๋ฅผ ๊ผฌ์ฅ ์ฐ๋ผ๋ ์ด์ผ๊ธฐ๊ฐ ์๋, ํผ๋์ ์ค ์ ์๋ ๋ถ๋ถ์ ๋ํด์
๋ ์ด๋ฅผ ๋ช
๋ฃํ๊ฒ ์ด๋ฆ ์ง์ด ์ฃผ์๋ ๊ฒ์
๋๋ค. ์ ๊ทธ๋ฆฌ๊ณ ๊ด๋ก์ ์ผ๋ก ์ฐ๋ ๊ฒ์ด ์๋๋ฐ, begin/end ์์
๋๋ค.
์ฌ๊ธฐ์ end๋ ํ๋ก๊ทธ๋จ ์ธ๊ณ์์๋ ๊ดํ์ ์ผ๋ก exclusive ์ฆ ํฌํจํ์ง ์์ต๋๋ค. ์ด๋ฐ ์ธก๋ฉด์์ ์๋์ ๊ฐ์
๋ฉ์๋ ๋ช
์ ์ ์ํ๊ณ ์๋ ๊ฒฝ์ฐ๋ค์ด ์์ต๋๋ค.
substring(intbeginIndex, intendIndex)
์ ํจ์์์๋ end๋ ๊ด๋ก์ ๋ง์ถฐ์ ํด๋น index์ ์๋ ํญ๋ชฉ์ ํฌํจํ์ง ์๋๋ต๋๋ค.
Naming Booleans
์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ฉด์, ๋ํ์ ์ผ๋ก ์ ๋งคํ๊ฒ ์์ฑํ๋ ๋ณ์๋ช
์ค ํ๋๋ ๋ฐ๋ก Boolean ๊ฐ์ ๋ํ ๋ณ์์
๋๋ค. ์๋ฅผ ๋ค์ด์ booleanread_password = true; ๋ผ๋ ๋ฌธ์ฅ์ด ์์ ๋, ์ด๊ฒ ๋ฌด์จ ๋ป์ผ๊น์?
๊ตฌ์ง ํด์์ ํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ์ํธ๋ฅผ ์ฝ์ ํ์ํ๋ค๋ผ๊ณ ํด์์ ํ ์๋, ์ด๋ฏธ ์ํธ๋ ์ฝํ๋ค๊ณ ํด์์ ํ ์
๋ ์์ต๋๋ค. ์ด๋ฐ ๊ฒ ๋ฐ๋ก ์ ๋งคํจ์
๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ณ์์ ์ง์ค์ ์ฐพ๊ธฐ ์ํด์ ์ฝ๋๋ฅผ ์ญ์ฑ ๋ณด๊ณ ๋ค๋๊ฒ ์ฃ .
๊ทธ๋ฌ๋ค๊ฐ ์ ์ด๋ฐ ๋ป์ด๊ตฌ๋ ๋ผ๊ณ ์ดํด๋ฅผ ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ด ๋ณ์๋ฅผ
๋ง๋๋ ์ฌ๋๋ค์ ๋ชจ๋ ํ ๋ฒ์ฉ ๊ทธ๋ฌ๊ฒ ์ฃ . ์ด๊ฒ ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ข๊ฒ ์ง์ผ ํ๋ ์ด์ ์
๋๋ค.
์ ๋ณ์๋ฅผ ๋ง์ฝ need_password ๋๋ user_is_authenticated๋ผ๊ณ ์ฌ์ฉ์ ํ๋ฉด ์ด๋ค๊ฐ์? ์๊น๋ณด๋ค ์ข ๋ ๋ช
๋ฃํ๊ฒ ๋ณด์ด์ง์? ์ด๋ ๊ฒ ๋ช
๋ฃํ๊ฒ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ๋ฐ ๋ช๊ฐ์ง ํ์ ๋๋ฆฌ๋ฉด, is, has, can
๋๋ should์ ๊ฐ์ ๋จ์ด๋ฅผ ์จ์ ํํํ๋ฉด ์ข ๋ ๋ช
๋ฃํ ๋ณ์ ์ ์๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ ์์ฃผ ์ค
์ํ ๊ฒ์ด ์๋๋ฐ, ๊ฐ๋ฅํ not ์๋ฏธ๋ฅผ ๋ด์ ๋ณ์๋ณด๋ค๋ ๊ทธ๋ ์ง ์์ ๋ณ์ ๋ช
์ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅ ๋๋ฆฝ๋๋ค.
์ด๋ ๊ฒ ํ๋ ๊ฒ์ not์ด ๋ค์ด๊ฐ๋ฉด ์ง์ ๋ ๋ณ์ ๊ฐ์ ๋ํด์ not์ด๋ ์๋ฏธ๋ฅผ ๋ํด์ ํด์ํ๊ฒ ๋๋๋ฐ, ์ด๊ฒ
ํผ๋์ ๊ฐ์ ธ๋ค ์ฃผ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ง๋ก๋ง ์ด์ผ๊ธฐ ํ๋ ํผ๋์ค๋ฝ์ฃ ? ์๋ก ๊ฐ๋๋ค.
Diable_ssl = false; use_ssl = true;
์ 2๊ฐ ๋ณ์๋ ssl์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ธ๋ฐ, ์ด๋ ๊ฒ ๋ ์ฝ๊ธฐ ์ข๊ณ ํผ๋์ด ์ ์๊ฐ์? Not ์๋ฏธ๊ฐ ์ ๋ด๊ธด ๋ณ
์๋ช
์ชฝ์ด์ง ์์๊ฐ์? ์ด๋ ๊ฒ ์์ ๋
ธ๋ ฅ ํ๋๊ฐ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ข๊ฒ ํด ์ค๋๋ค.
Matching Expectations of Users
์์ธ๋ก ์ ์ ์ด์ผ๊ธฐ ๋์จ ๊ด์ต์ ์ธ ์ฉ์ด๋ค์ด ์์ต๋๋ค. ๊ธ๋ฐฉ ์ด์ผ๊ธฐํ begin, end๊ฐ ๊ทธ๋ฌํ์ง์. ์ด๋ฌํ ๊ด
์ต์ ์ธ ์๋ฏธ์ ๋ํด์๋ ๊ทธ ์๋ฏธ๋ฅผ ์ง์ผ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ง์ฝ ๋ค๋ฅธ ์ํฉ์ด ์๋ค๋ฉด ๋ค๋ฅธ ์ด๋ฆ์ ์ทจํด์ฃผ๋ ๊ฒ
์ ์ ๊ทน ์ถ์ฒํฉ๋๋ค.
์ ๋ค์ด๊ฐ๋๋ค. ใ
ใ
. ๋ฐ๋ก get์ผ๋ก ์์๋๋ ํจ์๋ช
์ ์๊ฐํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก get์ผ๋ก ์์ํ๋ ํจ
์๋ ๋ณ์์ ๋ํ ๋จ์ ์ถ๊ฐ/์ญ์ ๋ก ์ธ์ํ๊ณ ๋ ํ๋ฉฐ, ๊ทธ๋ ๊ธฐ์ ํจ์ ์ํ ๋น์ฉ์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์๊ฐํ๊ณ
์ํ์ ํฉ๋๋ค. ์ด๋ฐ ๊ด์ต์ ์ธ ์๊ฐ์ ๊ณ ๋ คํ์ง ์๊ณ getMean์ด๋ผ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ ์ ๋ง์ ๋ณต์ก
ํ ๊ณ์ฐ์ ํ๋ ๋ก์ง์ ์์ฑํด์ ํ ๋ฒ ์ํ์ 10๋ถ์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ด ํจ์๊ฐ ์ด๋
11. ๊ฒ ๋๋ ๊ฒ์ธ์ง ๋ชจ๋ฅด๊ณ (?) getMean์ ์์๋ก ํธ์ถํ๊ณ , ๊ฒฐ๊ตญ ์๋น์ค ์ฅ์ ๋ก ์ด์ด์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ
๊ฒฝ์ฐ ์ฒ๋ผ ๊ดํ์ ์ธ ๊ฐ๋
์ ์ด๋ ์ ๋ ์ง์ผ์ฃผ์ด์ผ ํฉ๋๋ค.
์ด์ ์ ์ฌํ ์ฌ๋ก๋ก, size ํจ์๊ฐ ์์ต๋๋ค. ๋๋ถ๋ถ ๋ฐ์ดํฐ๊ตฌ์กฐ์ฒด๋ size๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณ์ฐ
ํด ๋ด๋ ์๋๋ O(1)๋ก ์๊ฐํ๊ณ ๋ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ง์ฝ O(n2) ์๋๋ก ๊ณ์ฐ์ด ๋๋ค๋ฉด. ์ด ์ด๋ฆ๋ง์ผ๋ก ํด๋น
ํจ์๊ฐ ๊ทธ๋ด ๊ฒ์ด๋ผ๊ณ ์์์ด๋ผ๋ ํ ์ ์์๊น์? ๋ฐ๋ก ์ด๋ฐ ๋ถ๋ถ์ด ๋ฏธ๋ฌํ์ง๋ง, ๊ดํ์ ์ธ ์๋ฏธ๋ฅผ ๋๋ ๊ฒฝ
์ฐ์์๋ ์ด๋ฅผ ๋์ผ ์ด๋ฆ์ ์ฌ์ฉํด์ ์คํด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ๋ค์
๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ ์ธ์๋ ๋ง์ ๊ฒฝ์ฐ๋ค์ด ์ฐ๋ฆฌ๋ ์ฝ๊ฒ ์ด๋ฆ์ ์ง์ง๋ง, ๋ค์ ๋ณด๋ฉด ๋ช
ํํ ์ ๋ฌ์ด ์ ๋๋ ๊ฒฝ์ฐ๊ฐ
๋ง์ต๋๋ค. ํนํ๋ ์ฐ๋ฆฌ๋ ๋ฏธ๊ตญ ์ฌ๋์ด ์๋๋, ๋์ฑ ๊ทธ๋ฐ ๊ฒฝ์ฐ๋ค์ด ์๊ฒ ์ฃ . ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ข ๋ ์ ๊ฒฝ์ ์จ์
์ด๋ฆ์ ์คํด ๋๋ ํผ๋์ด ์์ ์ ์๋ ์ด๋ฆ์ ์ ํํ๋๋ก ๋
ธ๋ ฅํด์ผ ํ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๋ฉด์์ ๋ณผ
๋ ๋ฐฉํฅ์ฑ์ ์ฃผ์ํด์ ๋ณด๋ฉด ์ข ๋ ๋ช
๋ฃํ์ง ํ์ธ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ค ์ด๋ฆ์ด ํ ๋ฐฉํฅ์ผ๋ก ํด์์ด ๋๋์ง ์๋
๋ฉด ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก๋ ํด์์ด ๋๋์ง, ์ํ๋ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๊ณ ์๋์ง๋ฅผ ๊ณ ๋ฏผํ๋ ๊ฒ์ด์ง์.
๋ง์ง๋ง์ผ๋ก ๋ค์ ํ ๋ฒ ์๊ฐํ๋ ๋ฉด์์ ์ค๋ก๋ฅผ ํ๋ ๋ ์๊ฐํ๊ฒ ์ต๋๋ค. Is_overwrite๋ผ๋ Boolean ๊ฐ์ด ์
์ต๋๋ค. Is_overwrite = true; ๋ผ๋ฉด ์ด๊ฒ ๋ฌด์จ ์ด์ผ๊ธฐ์ผ๊น์? ์ดํด๊ฐ ๋์๋์? ์ฐธ๊ณ ๋ก overwrite๋ผ๋ ๊ฒ์ ๋ฎ
์๋ ๋์์ ํํํ๋ ๋ฉด์์ overwrite์
๋๋ค. ๊ทธ๋๋ ์ดํด๊ฐ ๋์๋์? ๋ง์ฝ can_overwrite = false; ๋ผ๋ฉด ์ด
ํด๊ฐ ๋์๋์? ๋๋ฒ์งธ ๊ฒ์ ๋ง๊ธ ๋ฐฉ์ง๋์ด๋ค๋ ์๋ฏธ๋ก ์ดํด๊ฐ ๋ ๊ฒ์
๋๋ค. ๋ฌธ์ ๋ is_overwrite๊ฐ ๋ง๊ธ ๋ฐฉ
์ง ์ํ์ธ๊ฐ๋ผ๋ ๊ฒ์ ๋ฒ์ญํ๋ฉด์, ์ฌ์ฉํ ๋ณ์์ด๊ณ , ๊ทธ ์๋ฏธ๊ฐ ์๋ฑํ๊ฒ ํผ๋์ ์ฃผ๊ณ ์๋ค๋ ํ์์
๋๋ค.
์ด๊ฒ์ ํ๋์ ์์ผ ๋ฟ, ์ฐ๋ฆฌ๋ ์ค๋๋ ๋ง์ ์ด๋ฆ๋ค์ ์ง๊ณ ์์ต๋๋ค. ์ด๋ด ์ ์๋ค๋ ์ ์ ๋๋ผ๊ณ ๋ค์ ํ
๋ฒ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
12. Chapter 4. Aesthetics (์๋ฆ๋ค์์ ๋ํ์ฌ)
์ฑ
์ ์๊ฐํด ๋ด
์๋ค. ์ฑ
์ ๋์ผํ ๋ด์ฉ์์๋ ๋ฌธ๋จ์ ์ด๋ป๊ฒ ํ์๋ฅผ ํ๊ณ , ๊ทธ๋ฆผ ๋ฐฐ์ด์ ์ด๋ป๊ฒ ํ๊ณ ํฐํธ๋ฅผ
์ด๋ค ํฌ๊ธฐ๋ก ํ๋๊ฐ์ ๊ฐ์ ์ ์ ๋ฐ๋ผ์ ๋
์์๊ฒ ๋ค๊ฐ์ค๋ ์ ๋๊ฐ ๋ง์ด ๋ค๋ฆ
๋๋ค. ๊ทธ๋ฐ ๋ฉด์์ ์ข์ ์ฑ
์
๋์ผํ ๋ด์ฉ์ด๋ผ๋ ์ ์ ๋์ด๊ฐ๊ฒ ๊ตฌ์ฑ์ด ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง์. ์ฐ๋ฆฌ๊ฐ ์ด๋ฒ์ ์๊ฐํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก
์ด ๋ถ๋ถ์
๋๋ค. ์ด๋ฐ ๊ฒ ์ฝ๋์์ ์ด๋ป๊ฒ ๋ณด์ผ๊น์? ์๋ ์๋ฅผ ํตํด์ ๋๊ปด ๋ด
์๋ค.
์ด๋ค๊ฐ์? ๋ณด๊ธฐ ์ข์๊ฐ์? ์ด์ ๋์ผํ ๋ด์ฉ์ธ๋ฐ, ์๋์ ๊ฐ์ ์๋ ์์ต๋๋ค.
์ด๊ฒ ๋ฐ๋ก ์ด์ฐ ๋ณด๋ฉด ์ฝ๋์ ์์ด์ ๋ณธ์ง์ ๊ฐ์ง๋ง ๋ค๋ฅธ ์ธํ์ผ๋ก ์ฝ๋๋ฅผ ์ฝ๋ ์ด๋ค์ด ํธํ๊ฒ ์ฝ๋๋ฅผ ์ฝ์
์ ์๋๊ฐ๋ฅผ ์๋ ค์ค๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์ด๋ฌํ ๊ด์ ์์ ๋ณด๊ธฐ ์ข๊ฒ ํ๋ ๋ถ๋ถ์ ๋ํ ๊ฐ์ด๋๊ฐ ๋ ์ ์๋
๋ด์ฉ๋ค์ ์ดํด ๋ณด๊ณ ์ ํฉ๋๋ค.
Rearrange Line Breaks to Be Consistent and Compact
๋ณดํต ์ฐ๋ฆฌ๋ 80์ ๊ธธ์ด๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์, ์ค๋๊น์ ๋ฌด์ฌ์ฝ ์ฌ์ฉํ๊ณ ๋ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ถ๋ถ์ ๋ํด
์ ์ข ๋ ์ ๊ฒฝ์ ์ฐ๋ฉด ์ข ๋ ํจ๊ณผ์ ์ธ ์ ๋ณด ์ ๋ฌ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ณด๋ฉด์ ์๊ฐํด๋ณด์ฃ .
13. ์ ์ฝ๋ ์ด๋ค๊ฐ์? ์ ์ง ๋ ๋ฒ์งธ ์์ฑ์๊ฐ ๋ง์ ๊ฑธ๋ฆฌ์ง ์๋์? ๋ฐ๋ก ์ด๋ฐ ๊ฑธ๋ฆผ์ ๋ญ๊ฐ ์ ์ ๋์ด๊ฐ์ง ์๋
์ฝ๋๋ผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ๋ถ๋ถ์ ์ฌ์ํ์ง๋ง ์๋์ ๊ฐ์ด ๋ฐ๊ฟ๋ด
๋๋ค.
์ด๋ ๊ฒ ๋ง๋ค ๋ ๋๋ฆ โ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ด๋ค์ ์ ์ฌํ ๋ชจ์ต์ ๊ฐ์ง๋๋ก ํ๋ค.โ๋ผ๋ ์์น์ ํ๋ ๊ฐ์ง๊ณ
๋ชจ์์ ๋ฐ๊พธ์ด ๋ณธ ๊ฒ์
๋๋ค. ๋ณ ์ฐจ์ด ์๋๋ฐ, ์ข ๋ ๋์๊ฐ์? ์ฌ๊ธฐ๋ค๊ฐ ๋ญ๊ฐ ๋ง์ ๋ฐ๋ณต๋๋ ๊ฒ์ด ๋์ ๊ฑฐ์ฌ
๋ฆฌ๋ฉด ์ด๋ ๊ฒ ๊น์ง ๋ง๋ค์ด๋ณผ ์ ์์ต๋๋ค. ์กฐ๊ธ ์๊ฐํ๋ฉด ๋ง์ ๋ณํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ง์.
14. ๋์ผํ ์ฃผ์์ ํ ๊ณณ์ผ๋ก ๋ชจ์ผ๊ณ , ํญ์ ํ์ฉํด์ ๋์ผํ ๋ฐ์ดํฐ๋ ๋์ผํ ์ปฌ๋ผ์ ๋ณด์ด๋ฏ์ด ์กฐ์ ์ ํ์ต๋๋ค.
์ฒ์ ์ ํ๋ ์ฝ๋๋ณด๋ค ์ข ๋ ์ ๋์ด๊ฐ์ง ์๋์? ์ด๋ ๊ฒ ํ๊ธฐ ์ํด์ ํญ๊น์ง ์ฐ๋ฉด์ ํด์ผ ํ๋๊ฐ? ์ด๋ฐ ์ง
๋ฌธ์ ํ์ค ๋ถ๋ค์ด ๋น์ฐํ ์์ต๋๋ค. ํ๋จ์ ๋น์ ์ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์ฝํ์ง๊ธธ ๋ฐ๋ผ๋๊ฐ ์์ค์ ๋ฌ๋ ค ์๋ค๊ณ
์ด์ผ๊ธฐ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Use Methods to Clean Up Irregularity
์ง๊ธ๋ถํฐ ์ด์ผ๊ธฐํ ๋ถ๋ถ์ ๋ฐฉ๋ฒ์ ์ธ ๋ฉด์
๋๋ค. ์ง์ ๋ถํด ๋ณด์ด๋ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ์ ๋ฆฌ๋ฅผ ํ ์ง์ ๋ํ ์ด
์ผ๊ธฐ ์ค ํ๋๋ก์ ์๋ก์ด ํจ์๋ฅผ ํตํด์ ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์ฝ๋ ๋ค์ด๊ฐ๋๋ค. ^^
์ ์ฝ๋๋ ExpandFullName์ ๋ํด์ ๊ฒ์ฆ์ ํ๋ ์ฝ๋์ด์ง์. ๊ทผ๋ฐ ๋ญ๊ฐ๊ฐ ๋ณต์กํ๋ค๊ณ ์๊ฐ์ด ๋ค๊ณ ์ ์ง
๋ฐ๋ณต๋๋ ๋ด์ฉ์ด ๋ง์ด ๋ณด์ด์์ฃ . ExpandFullName(database_connection, โฆ) ์ด๋ฐ ํํ๊ฐ ๋ฐ๋ณต์ด ๋ฉ๋๋ค. ๊ทธ
๋ ๋ค๋ฉด ์ด๋ฐ ๋ถ๋ถ์ ๋ํด์ ๋ฐ๋ณต๋๋ ๋ด์ฉ์ ๋ํด์ ์๋ฏธ๋ฅผ ๊ฐ๋ช
ํ๊ฒ ํ๋ฉด์ ๋ชจ์ต๋ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํฉ๋
๋ค. ์ด ๊ณผ์ ์ ์๋ก์ด ํจ์๋ฅผ ์ ์ธํ๊ฒ ๋๋ ๊ฒ์ด์ฃ . ์ฐ์ ์ ์ฝ๋๋ฅผ ์๋ฏธ๋ง ์ด๋ ค์ ์๋์ ๊ฐ์ด ์ ๋ฆฌํฉ๋๋ค.
์ฝ๊ณ ์ดํดํ๋๋ฐ ํธํด์ก์ฃ ? ๋ฌผ๋ก CheckFullName์ด ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๊ตฌํ์ด ๋์ด์๋ ์ง๋ ํ์ฌ๋ก์๋
์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ ์ฝ๋๊ฐ ์๋ํ๋ ๋ฐ๋ ์์ ๊ฐ์ด ์ ๋ฆฌํจ์ผ๋ก ์ธํด์ ๋ช
๋ฃํด์ง์ ๊ฒฝํํ ์ ์์ต๋๋ค.
15. ์ด๋ ํํ refactoring์์ ๋์ค๋ ๊ธฐ๋ฒ ์ค ํ๋์ด๊ธฐ๋ ํ์ง์. ๋ค์ ๋์๊ฐ์ ์๋ก ๋ง๋ค์ด์ง ํจ์๋ ์ด๋ป๊ฒ
์ ๋ฆฌ๊ฐ ๋์๋์ง ํ์ธํ๋๋ก ํฉ์๋ค. ์ธ๋ถ ๊ตฌํ์ ์๋์ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ ์ ๋ฆฌ๋ฅผ ํ๋ฉด์, ์ฐ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ๋ง๋๋ ๊ฒ์ด ๋จ์ํ ์๊ฐ์ ์ธ ๋ฟ๋ง ์๋๋ผ, ๊ธฐ๋ฅ์ ์ธ ๋ฉด ๊ตฌ
์กฐ์ ์ธ ๋ฉด์์๋ ์ข์ ์ํฅ์ ์ค๋ค๋ ์ฌ์ค์ ์ ์ ์์ต๋๋ค. ์ด๋ ์์ผ๋ก ๋ณด๋ ๋๋ถ๋ถ ์ฌ๋ก์์๋ ๋ณผ ์
์๋ ๊ธ์ ์ ์ธ ์ถ๊ฐ์ ํจ๊ณผ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Use Column Alignment When Helpful
์ง๊ธ ๋ณผ ๋ด์ฉ์ ์์์ ์๋ก ์ ์ธ ๋ด์ฉ์ผ๋ก ์ธ๊ธ์ด ๋ ๋ด์ฉ์ธ๋ฐ, ๋ค์ ํ ๋ฒ ๋ณด๊ฒ ์ต๋๋ค. ์ด๊ฑฐ ์ซ์ดํ ๊ฐ๋ฐ์
์ฐธ ๋ง์ ๊ฒ์ด๋ผ ์๊ฐ์ด ๋ฉ๋๋ค๋ง, column ์ ๋ ฌ์ ๋ณด๊ธฐ ์ข๊ฒ ํ์๋ ์๋์
๋๋ค. ์ฐ์ ๊ฐ๋จํ ์์ ์์ ์์
๋ณธ ๋ด์ฉ์ ์๊ฐํฉ์๋ค.
์ ์ง ์ฐ๋งํ์ง ์๋์? ๋ญ ์ด๊ฒ๊น์ง ์ฐ๋งํ๋๋ผ๊ณ ์ด์ผ๊ธฐ ํ์๋ ๋ถ ๋ง์ ๊ฒ์
๋๋ค. ๊ทธ๋๋ ์ฐ๋ฆฌ๋ ์ฝ๋๋ฅผ
์ฝ๋ ๋ถ์ด ์ ๋ง ๋ง์ ๋๋ ๋ชจ์ต์ผ๋ก ๋ง๋ค์ด๋ณด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌ๋ฅผ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ค๊ฐ์? ๋ ๋ซ์ง ์์๊ฐ์? ๋ฐ๋ณต๋๋ ๊ตฌ๋ฌธ์์ ๊ฐ๊ฐ ์ด๋ค ์ธ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ๋์ง ํ ๋ถ์ ํ ๋ค์ด
์ค์์ฃ ? ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๊ฐ์กฐํ๊ณ ์ถ์ ๋ถ๋ถ์ด ์์ต๋๋ค. ๋์ ํ ๋ค์ด์จ๋ค๋ ์ด์ผ๊ธฐ๋ ๊ทธ๋งํผ ์ค์๋ ๋์
์ ๋ณด์ธ๋ค๋ ์ด์ผ๊ธฐ ์
๋๋ค. ์๋ ์๋ฅผ ๋ณด๋๋ก ํ์ง์.
16. ์ ์ฝ๋ ์ด๋ค๊ฐ์? ์ฐ๋ฆฌ ํํ ๋ณด๋ ์ฝ๋์ด์ฃ ? ๋ณผ ๋ ๋ง๋ค ๋๋ ์๊ฐ์ธ๋ฐ ์ฐธ ์ง์ ๋ถํ์ฃ . ๊ฒ๋ค๊ฐ ์ ์ฝ๋๋
๋ฒ๊ทธ๋ ์์ต๋๋ค. ๋ฌผ๋ก ์ด๋ฐ ๋ฒ๊ทธ๋ ์์ฆ ๊ฐ๋ฐ๋๊ตฌ๊ฐ ๋ค ์ก์์ฃผ์ง๋ง, ์๋ก์ ๋ณธ๋ค ์๊ฐํด ์ฃผ์ธ์. ์ ์ฝ๋๊ฐ
๊ฐ์ง ๋ฒ๊ทธ๊ฐ ๋ญ๊น์? ์ฐพ์ผ์
จ๋์? ์์ง ๋ชป ์ฐพ์ ๋ถ๋ค์ ์ํด์ ๋จ์ํ ์ฝ๋ ์นผ๋ผ์ ๋ง์ถฐ์ค ๋ณด๊ฒ ์ต๋๋ค.
์ด์ ๋ณด์ด์๋์? Phone์ ๋ํ ์ ์ธ๋ถ์์ request๊ฐ r์ด ๋น ์ง ์ํ๋ก ์ ์๊ฐ ๋์์ฃ ? ์ด๋ ๊ฒ ๋ชจ์์ ๋ณด๊ธฐ
์ข๊ฒ ํ๋ ๊ฒ์ ํ ๋์ ์ฝ๋๊ฐ ๋ณด์ด๊ฒ ํด์ฃผ๊ณ , ์ด์ ๋ฐ๋ฅธ ์ข์ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ๋ค ์ค๋๋ค.
์ด ์ ๋ ํ๋ฉด ๋๋ถ๋ถ ๊ฐ๋ฐ์๊ฐ ์ด๋ฐ ์ด์ผ๊ธฐ ํ ๊ฑฐ์์. ์ด๋ ๊ฒ ํ๋ค๋ณด๋ฉด, diff ์ธ์ ์ฒ๋ฆฌ์์ ๋ง์ ๋ฌธ์ ๊ฐ ์ฌ
๋๊ฐ ์์ด์. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ํ๋ ๊ฒ ๋ฒ๊ฑฐ๋ฌ์์. ์ด๊ฑฐ ๋ง๋ ์ด์ผ๊ธฐ ์
๋๋ค. ๊ทธ๋ ์ง๋ง, diff ์ธ์์ด์ผ ์กฐ์ ์ด
๊ฐ๋ฅํ๊ณ ์๊ฐ ์ธ๋ก ๋ฒ๊ฑฐ๋กญ์ง ์์ต๋๋ค. ์คํ๋ ค ์๋ป์ง ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋์ฑ ํด๋ณด๊ณ ์ถ์ด์ง ๊ฒ์
๋๋ค. ํ ๋ฒ ํด
๋ณด์ค ๊ฒ์ ๊ถ์ฅ ๋๋ฆฝ๋๋ค. ํด๋ณด๊ณ ์๋๋ฉด ์ ํ๋ฉด ๋์์์์.
Pick a Meaningful Order, and Use It Consistently
์ดํดํ๊ธฐ ์ข์ ์ฝ๋๋ ํ๋ฆ์ด ํฌ๊ฒ ๋ณํ์ง ์๋ ์ฝ๋์
๋๋ค. ์ด๋ฌํ ํ๋ฆ ์์๋ ๋ฐ๋ณต๋๋ ์์๋ ํฌํจ๋์ด
์์ต๋๋ค. ์์ ์ฐ๋ฆฌ๋ request.POST.get์ ์ํด์ ๋ณ์ ์ค์ ํ๋ ์ฝ๋๋ฅผ ๋ณด์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก
๋ ๋ค์ด๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
์ ๋ฌธ์ฅ์ ์ด์ด์ ์๋์ ๊ฐ์ ๋ฌธ์ฅ์ด ์ค๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ด
๋๋ค.
์ด์ผ๊ธฐ ํ๋ ค๊ณ ํ๋ ๋ถ๋ถ์ด ์ด๋ค ๋ถ๋ถ์ธ์ง ์์๊ฒ ์ฃ ? ๋ฐ๋ก ๋จ์ํ์ง๋ง ์์์
๋๋ค. ์ฌ๋๋ค์ ํ๋์ ๋์ผํ
๋ชจ์ต๋ค์ ๋์ผํ๊ฒ ์ ์ง๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ฐ๋ฐ, ์์ ๊ฐ์ด ์์ง๋ง ์์๋ฅผ ๋ฐ๊พธ์ด ๋๋ฉด, ๋ฌด์์ ์ค์ ์ฐพ๋
๋์์ ๋ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ฝ๋๋ฅผ ์ฝ๋๋ฐ ๊ฑธ๋ฆผ๋์ด ๋ฉ๋๋ค. ์์ ๋งํผ ์์ฑ์๊ฐ ์กฐ๊ธ๋ง ๋ ์ ๊ฒฝ์
์ฐ๋ฉด ํจ์ฌ ์ฝ๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
17. Organize Declarations into Blocks
์ง๊ธ ์ด์ผ๊ธฐ ๋๋ฆด ๋ด์ฉ์ ํ๋ก๊ทธ๋จ ์งค ๋๋ถํฐ ์๋ฌต์ ์ผ๋ก ๋งจ๋ ๋ค์๋ ์ด์ผ๊ธฐ์ง๋ง, ํ์ธ ์ฐจ์์์ ํ ๋ฒ ๋ณด
๊ณ ๋์ด๊ฐ๋๋ค. ์ฐ์ ์ฝ๋๋ฅผ ๋ด
๋๋ค.
์ ๋ด์ฉ์ ๋ณด๋ฉด ์ฐ๋งํ์ฃ ? ์ด๋ ์ ์ธ ์์ ์๋ ์ ์ฌํ ์์ฑ๋ค๋ก ๋ถ๋ฆฌํด์ ์ ๋ฆฌ๋ฅผ ํ ์ ์๋๋ฐ, ํ์ง ์์
๊ธฐ ๋๋ฌธ์
๋๋ค. ์ข ๋ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ ์๋ฏธ๊ฐ ์ ์ฌํ ๊ฒ๋ค์ ๋ฉ์ด๋ฆฌ๋ก ๋ง๋ค์ด ๋๋ค๋ ๋๋์ผ๋ก
์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฃผ์๊น์ง ํด์ ๊ตฌ๋ถ๋๋ ์์ญ์ ๋ํ ์ค๋ช
์ ๋ฃ์ด์ฃผ๋ ๋ณด๊ธฐ ์ข์ฃ ? ์ดํดํ๊ธฐ ํธํ๋ค๋ฅผ ๋ ๋์, ๋ณด๊ธฐ ์ข์ผ๋ฉด
๋ณด๊ณ ์ถ์ ๋ง์์ด ๋์ฑ ๋ค๊ฒ ๋์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ ์ ์ธ์ ์ฒ์์ ๋ณธ ์์ ๊ฐ์ด ํด ์ค ์ฝ๋๋ฅผ ๋ณธ๋ค๋ฉด, ๋ณด์
๋ง์ ๋ ์ด์ ๋ณด๊ณ ์ถ์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ง๋ง ์๋์ ๊ฐ์ด ์ ๋ฆฌ๋ ์ฝ๋๋ฅผ ์ ํ๋ค๋ฉด, ์ ์ง ๋ณผ๋งํ๊ฒ ์ฃ ?
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์ฝ๋๊ฐ ์ด๋ ๊ฒ ์ธ์๋๊ธฐ ์ํด์๋ผ๋ฉด ๋งค๋ฒ ์ด์ผ๊ธฐ ํ์ง๋ง, ์กฐ๊ทธ๋ง ์ฝ๋ ์ด๋ฅผ ๋ฐฐ๋ คํด์ ์ฝ๋๋ฅผ
์์ฑํ๋ฉด ๋ฉ๋๋ค.
18. Break Code into โParagraphsโ
์ด ๋ด์ฉ์ ์์ ๋ด์ฉ๊ณผ ์ค๋ณต๋๋ ๊ฐ์ด ์๋ ๋ด์ฉ์ธ๋ฐ, ์ ์ธ๋ถ ์ธ์ ์ค์ ๊ตฌํํ๋ ์ฝ๋์ ์์ด์๋ ์๋ฏธ ๋จ
์๋ก ๋ฌถ์ ์ ์๋ค๋ฉด, ๋ฌถ์ด ์ฃผ๋๋ก ํฉ๋๋ค. ์ด์ ๋ํด์๋ ์ถ๊ฐ ์ค๋ช
์์ด ๋์ ์์ ์ข์ ์๋ฅผ ๋ฐ๋ก ๋ณด๋๋ก
ํฉ์๋ค.
์ข ์ ๋ฆฌํด์ผ๊ฒ ์ฃ ! ์ฐ๋ฆฌ๋ ์๋์ ๊ฐ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๋ค์ ์ด์ผ๊ธฐ ๋๋ฆฌ์ง๋ง, ๋จ์ ์ด์ผ๊ธฐ๊ฐ ์๋๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ด ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ฐ๋ฆฌ๊ฐ ๋ฐฉ๊ธ ๋ด์จ ๊ฒ ๊ฐ์ด
โ๋ญ์ผ ์ด๊ฑฐ~โ ์๋๋ฉด โ์ ๊น๋ํ๋ฐ.โ ์ด๋ ๊ฒ ์ด์ผ๊ธฐํฉ๋๋ค.
Summary
์ง๊ธ๊น์ง ๋ณธ ๋ด์ฉ์ ์ฝ๋ ๋ชจ์์์ ๋ํ ์ด์ผ๊ธฐ ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ์ด์ผ๊ธฐ ๋๋ฆฐ ๋ด์ฉ์ coding
convention์ ์ํด์ ๊ธฐ์ ์ด ๋๊ธฐ๋ ํ์ง๋ง, ๊ทธ๋ ๊ฒ ๊น์ง ํ๊ธฐ๋ ๋๋ฌด ์ ์ฝ์ ์ด๋ผ ์ด์ผ๊ธฐ ํ์ง ์์ ๋ถ๋ถ๋ค
๋ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ชจ๋ ๋ด์ฉ์๋ ๋ค์ ์๊ฐ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์
๋๋ค.
19. ์ ์ฌํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๊ฒ๋ค์ ๋ฝ์์ฃผ๊ณ , ๋ชจ์์ค์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋์๊ฐ ์ ์ฌํ ์ฝ๋๋ ์ ์ฌํ ๋ชจ์ต์ ์ทจํ๋๋ก
ํฉ๋๋ค. ๋ณด๊ธฐ ์ข์ ์ฝ๋๊ฐ ์ฝ๊ธฐ๋ ์ข์ต๋๋ค.
20. Chapter 5. Knowing What to Comment
์ฐ๋ฆฌ๋ ์ฃผ์์ ์ฝ๋ ์์ ์ ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, โ์ ์ฃผ์์ ๋ฌ์์ผ ํ ๊น?โ์ ๋ํด์ ์๊ฐ์ ํ ๋ฒ ํด
๋ณผ ํ์๊ฐ ์์ต๋๋ค. ๊ฐํน ํ์ ์๋ ์ฃผ์ ๋๋ ์ด์ํ ์ฃผ์์ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ์ ๋ ํ๋ค๊ฒ ํ๊ธฐ
๋๋ฌธ์
๋๋ค. ๋๋ ๊ผฌ์ฅ ํ์ํ ๋ถ๋ถ์ธ๋ฐ, ํด๋น ๋ถ๋ถ์ ์ฃผ์์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ
์
๋๋ค.
์ฃผ์์ ์์ฑํ๋ ๋ชฉ์ ์ ์๋ฌด๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋น์์ ์ฝ๋ ์์ฑ์๊ฐ ์๋ ๊ฒ๋ค์ ์ฝ๋๋ฅผ ์ฝ
๋ ์ด์๊ฒ ์ ๋ฌํ๊ธฐ ์ํจ์
๋๋ค. ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์ฝ๋ ์ด๋ ๋ณธ์ธ์ด ๋ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฝ๋
์์ฑ์๊ฐ ์๋ ๊ฒ๋ค์ด๋ผ๋ ๊ฒ ์ค์๋ ์ด๋ค ๊ฒ์ ์ฝ๋์ ๋ฌป์ด๋ ์๋ ์๊ณ , ์ด๋ค ๊ฒ์ ์์ ์ ๋น
์ฐํ๋ค๋ผ๊ณ ๋๋ผ๋ฉด์ ์ ์ด์ผ ํ ๊ฒ์ด ๋ฌด์์ธ์ง๋ฅผ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ถ๋ค์ ๋ํด
์ ํ๋ํ๋ ์ฌ๋ก๋ฅผ ๋ณด๋ฉด์ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํฉ๋๋ค.
Knowing what not to comment
์ฃผ์ ์ญ์๋ ์ฝ๋๋ฅผ ์ฝ๋ ๋ ์ฝ๋ ๋ถ๋ถ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ์์ด ๋ค์ด๊ฐ๋ ๋งํผ ์ฝ๋ ์ค ์๋ ๋์ด
๋ฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ฃผ์๋ ์ ๋ง ํ์ํ ํญ๋ชฉ๋ค์ด ์๋ ์ด์์ ์ฝ๋๋ฅผ ์ฝ๋๋ฐ ๋ฐฉํด๋ง ๋ ๋ฟ ์
๋๋ค.
์ด๋ฐ ์ธก๋ฉด์์ ์๋ ์ฝ๋๋ฅผ ๋ด
์๋ค.
์ ์ฝ๋์ ์๋ ์ฃผ์์ ์ด๋ ํฉ๋๊น? ํ์ํ ๊น์? ํ์ํ์ง ์์ต๋๋ค. ์ฃผ์ ์์ฒด๊ฐ ์ฝ๋์์ ์ฃผ์ง
์๋ ์ ๋ณด ์ด์์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ํ๋ ๊ฐ์ ธ๋ด
๋๋ค.
์ฝ๋ ์์ฒด์์ ๋ฐ๋ก ์ ์ ์๋ ์ฌ์ค์ ๋ํด์๋ ์ฃผ์์ ๋ฌ์ง ๋ง์๋ค.
์ฌ๊ธฐ์ โ๋ฐ๋ก ์ ์ ์๋โ ์ฌ์ค์ ์ด๋ค ์ ๋์ผ๊น์? ์ด์ ๋ํด์ ๋ค์ ์๊ฐํ๋ ์ธก๋ฉด์์ ์๋
์ฝ๋๋ฅผ ๋ด
์๋ค.
์ ์ฃผ์์ ์ด๋ค๊ฐ์? ์ ์ฃผ์์ ์ฝ๋์ ์๋ ๋ด์ฉ ์ธ์ ๋ค๋ฅธ ์ถ๊ฐ์ ์ธ ์ ๋ณด๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง
๋ง, ์ฝ๋๋ฅผ ์ฝ์ด์ ์ดํดํ๋ ๊ฒ๋ณด๋ค ์ฃผ์์ ๋ณด๊ณ ์ดํดํ๋ ๊ฒ์ด ๋ ๋น ๋ฆ
๋๋ค. ์ด๋ฐ ๋ฉด์์ โ๋ฐ๋ก
21. ์ ์ ์๋โ์ด๋ผ๋ ์ธก๋ฉด์์ ์ ์ฃผ์์ ์๋ฏธ๊ฐ ์๋ ๊ฒ์
๋๋ค. ์ฆ ์ฃผ์์ ์ฝ๋ ์์ฒด์์ ์ ์ ์
๋ ๊ฒ์ ์์ฑํ์ง ์๋๋ผ๋, ์ฝ๋๋ฅผ ์ดํดํ๋๋ฐ, ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ์ด์ ๋ํ ์ง๊ด์ ์ธ ์ค๋ช
์ ํ์
ํ ์ฃผ์์ด๋ผ ํ ๊ฒ ์
๋๋ค.
์ ์ ์ธ๊ธํ ๋ด์ฉ๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ธ๋ฐ, ์ฐ๋ฆฌ๋ ์๋ฌด๋ฐ ์๊ฐ ์์ด ๋๋ ๊ต์ก์ ์ฃผ์์ ๋ฌด์กฐ๊ฑด ์
์ฑํ๋๋ก ๊ธธ๋ค์ฌ์ ธ ์์ด์, ๊ทธ ํ๋จ์ผ๋ก ์๋์ ๊ฐ์ด ์ฃผ์์ ๋ค๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ด๊ฑฐ์ผ ๋ง๋ก ์ ๋ง ์๋ฏธ ์๋ ์ฃผ์์
๋๋ค. ๋ง ๊ทธ๋๋ก ํจ์ ์ด๋ฆ์ ํ์ด์ ์ฃผ์์ ๋ฌ์์ ๋ฟ์ธ ๊ฒ
์ด์ฃ . ์ด๋ฌํ ์ฃผ์์ ์๋ํ๋ ์ฃผ์์ผ๋ก ๋ง์ด ์์ฑ๋๊ณ ๋ ํฉ๋๋ค. ์ ๋ง ์ ๋ง์ getter/setter์ ๋
ํ ์๋ฏธ ์๋ ์ฃผ์๋ค์ด ๊ฐ๋ํ์ง์. ์ด๋ฐ ์ฃผ์์ ๋ํด์ ํญ์ ์ ์๋ฏธํ๊ฐ๋ฅผ ์๊ฐํด์ ํ์๊ฐ ์
๋ค๋ฉด, ์ ๊ฑฐ๋ฅผ ํ๊ณ ํ์ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ ๋ง ํ์ํ๊ฒ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋๋ก ์ฃผ์์
๋ฌ๋๋ก ํฉ์๋ค.
์์ ๋ณธ ์ฃผ์๊ณผ ์ ์ฃผ์์ ๋ค๋ฅด์ฃ . ๋ฐ๋ก ์ฝ๋ ์์ฒด์์ ์ฝ์ ์ ์๋ ๋ด์ฉ์ด ์๋ ์ถ๊ฐ์ ์ธ ์ค์
ํ ์ ๋ณด๋ฅผ ์ ๋ฌํด ์ฃผ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ก ์ด๋ฐ ์ฃผ์์ด ํ์ํ ๊ฒ์ด์ฃ .
์ฃผ์๋ค ์ค์๋ ์๋์ ๊ฐ์ ์ฃผ์๋ ์์ต๋๋ค.
์ด๋ค๊ฐ์? ๋ญ๊ฐ ๊ฐ์ ํ ๋ถ๋ถ์ด ์์ด ๋ณด์ด๋์? ๋ฉ์ง ์ฃผ์์ธ๊ฐ์? ํํ ์ข์ ์ฝ๋๋ ์ฃผ์ ์์ด๋
์ฝ๋ ์์ฒด๋ก ์ ํํ ์๋ฏธ ์ ๋ฌ์ด ๋๋ ์ฝ๋๋ผ๊ณ ํ์ง์. ๊ทธ๋ฐ ์ธก๋ฉด์์ ๋ณด๋ฉด ์ ์ฝ๋๋ ์ด๋ ํฉ๋
๊น? ์ด ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ๋ฐ๊พธ์ด ๋ณด๊ฒ ์ต๋๋ค.
๋ญ๊ฐ ๋ฌ๋ผ์ก๋์? ํจ์ ์ด๋ฆ ์์ฒด๊ฐ ์ ๋ชป ๋์ด์, ์ฐ๋ฆฌ๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๋ง๊ตฌ๋ง๊ตฌ ์ฃผ์์ผ๋ก
๊ฐ๋นํ๋ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ ์์ ๊ฐ์ด ํจ์ ์ด๋ฆ์ ์ ํํ ๊ณ ์นจ์ผ๋ก ์ธํด์, ํ์ ์๋ ์ฃผ์๋ค์
์ง์ธ ์ ์์์ต๋๋ค. ์ด ๋ถ๋ถ ๊ต์ฅํ ์ค์ํฉ๋๋ค.
ํจ์๋ฅผ ํธ์ถํ๋ ์
์ฅ์์๋ ์ฃผ์๊น์ง ํฌํจํด์ ํธ์ถํ์ง ์์ต๋๋ค. ์ฆ ๋ณธ ํจ์๋ฅผ ํธ์ถํ๋ ๋ชจ๋
22. ์์น๋ค์ ์ฐพ์๊ฐ๋ฉด์, ์ฃผ์์ ๋ฌ์์ฃผ์ง ์์ ๊ฒ์ด๋ฉด ์์ ๊ฐ์ด ๋ชจํธํ ์ด๋ฆ์ ๋ํด์๋ ์ฃผ์์ด
์๋ ์ด๋ฆ ์์ฒด๋ฅผ ๊ณ ์น๋ ๋ฐฉํฅ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ ํ๋์ด ๋ค๋ฅธ ํจ์์์
์๋ชป๋ ํจ์ ํธ์ถ์ ๋ฐฉ์งํ๋ ๊ธธ์
๋๋ค. ์ฌ๊ณ ๊ฐ ํฐ์ง ๋ค์ โ์ด๋ฐ ํจ์์ธ์ง ๋ชฐ๋์ด์.โ๋ผ๊ณ ํ๋
๋๋ฃ์๊ฒ โ์ฃผ์์ ๋ค ์จ ๋์๋๋ฐ, ์ ์ ๋ดค์ด!โ๋ผ๊ณ ํ๋ฅผ ๋ด๋ ๊ฒ์ด์ผ ๋ง๋ก ์ ๋ง ์์ค ๋ฎ์ ํ๋ก
๊ทธ๋๋จธ์
๋๋ค. ๋ค์ ํ ๋ฒ ์๊ฐํฉ๋๋ค. ์ฝ๋ ์ด๋ฆ ์์ฒด๊ฐ ๋ชจํธํ ๊ฒฝ์ฐ์๋ ์ด๋ฆ ์์ฒด๋ฅผ ๋ช
ํํ๊ฒ
์์ ์ ํ๋๋ก ํด์ผ์ง, ์ฃผ์์ผ๋ก ๊ฐ๋นํ๋ ค ํ์ง ๋ง๋๋ก ํฉ์๋ค.
์ฆ. Self-documentingํ๋ ์ฝ๋๊ฐ ์ฃผ์๋ณด๋ค ์ฐ์ ํ๋ ๊ฒ์
๋๋ค. ํญ์ ์ข์ ์ด๋ฆ์ ์ข์ ์ฃผ์๋ณด๋ค
์ฐ์ ํจ์ ๋ช
์ฌํ๋๋ก ํฉ์๋ค. ์ด๋ฐ ์ธก๋ฉด์์ ์๋ ์ฝ๋ ํ ๋ฒ ๋ด
์๋ค.
์ ์ฝ๋ ์์ฒด๋ ๊ต์ฅํ ์ํํด ๋ณด์
๋๋ค. ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ง์ด๋ค๋. ๊ทธ๋ฐ๋ฐ ์์ธํ ๋ณด๋ฉด ์ฃผ์์ผ๋ก
์ค์ ๋ ์ง์คํธ๋ฆฌ๋ ์ง์ฐ์ง ์๊ณ ํค์ ๋ํ handle๋ง ํ์ด์ค๋ค๊ณ ํฉ๋๋ค. ๋ฉ์ง ์ฃผ์์ธ๊ฐ์? ์ ์ฝ
๋๋ ์ฐจ๋ผ๋ฆฌ ์๋์ ๊ฐ์ด ๊ณ ์น๋ ๊ฒ์ด ์ด๋จ๊น์?
์ด๋ค๊ฐ์? ์ฃผ์ ํ๋๋ ์์ด ์ํ๋ ๋ฐ๊ฐ ์ ์ ๋ฌ๋๊ณ ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ ๊ฒ self-documentingํ
๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
Recording your thoughts
์ง๊ธ๊น์ง ์ฃผ์์ ๋ฌ์ง ๋ง์์ผ ํ๋ ๋ถ๋ถ์ ๋ํด์ ์ด์ผ๊ธฐ๋ฅผ ํ์ต๋๋ค. ์ด์ ๋ ๋ฐ๋์ ์ฃผ์์ผ๋ก ๊ธฐ์ ๋์ด์ผ
ํ๋ ๊ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ข์ ์ฃผ์๋ค์ ์์ธํ ๋ณด๋ฉด, ์ฝ๋ ์์ฑํ ๋น์์ ์ฝ๋ ์์ฑ์๊ฐ ๊ฐ์ง๊ณ ์๋ ์ค์ํ ์ ๋ณด๋ค์ ๋ด๊ณ ์๋ ์ฃผ
์์
๋๋ค. ์ด๋ฅธ๋ฐ ํ๋ก๊ทธ๋๋จธ์ ์๊ฐ์ ์ ๋ฌํ๊ธฐ ์ํ ์ฃผ์๋ค์ธ ๊ฒ์ด์ฃ . ์ด๋ฌํ ์๊ฐ์ ๋ง์น ํด๋น ๋ถ๋ถ์ ๋
ํ insight๋ ์จ์ ์ด์ผ๊ธฐ๋ค์ ๋ด๊ณ ์์ต๋๋ค. ๋ชจํธํ๊ตฐ์. ๊ตฌ์ฒด์ ์ผ๋ก ์๋ ์๋ฅผ ๋ณด๋๋ก ํฉ์๋ค.
์ ์ฃผ์์ ํด๋น ์ฝ๋๋ฅผ ์์ฑํ๋ ์ด๊ฐ ์ด๋ฌํ ์ฝ๋๊ฐ ๋์ค๊ฒ ๋ insight๋ ๋ฐฐ๊ฒฝ ์ ๋ณด๋ฅผ ์ ๊ณตํจ์ผ๋ก ์ฝ๋๋ฅผ
์ฝ๋ ์ด๋ค์ด ์ถ๊ฐ์ ์ธ ๊ณ ์์ ํ์ง ์๋๋ก ํจ๊ณผ ๋์์ ์ ์ด๋ฐ ์ฝ๋๊ฐ ๋์ค๊ฒ ๋์๋๋ฅผ ์๋ ค์ฃผ๊ณ ์์ต๋๋ค.
์ด๋ฐ ๋ด์ฉ์ด ๋ฐ๋ก ์ฝ๋์ ๋ํ insight ๋๋ ๋ฐฐ๊ฒฝ ์ง์์
๋๋ค. ๋ ๋ค๋ฅธ ์๋ฅผ ๋ด
์๋ค.
์ ์ฃผ์์ ์ด๋ ํ๊ฐ์? ๋ง์ฝ ์ ์ฃผ์์ด ์๋ค๋ฉด, ํด๋น ์ฝ๋๋ฅผ ๋ณด๋ ์ฌ๋์ ๋ช๋ช ๋จ์ด๊ฐ ๋์ณ์ง๋ ๊ฒ์ ๋ฐ๊ฒฌ
ํ๊ณ ๋ฒ๊ทธ๋ผ ์๊ฐํ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ณธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ์ด๊ฐ ๊ณ ์ํด์ ๋ด๋ฆฐ 100%๋ ํ๋ค๋ค๋ ์ฌ
23. ์ค์ ๋ค์ ๋ฐ๊ฒฌํ๊ฒ ๋๊ฒ ์ฃ . ์ด๋ง์ด๋งํ ์๊ฐ์ ํ๋นํด์. ๊ทธ๋ฌ๋ ์์ ๊ฐ์ด ์ฃผ์์ ์ฒ๋ฆฌํจ์ผ๋ก ์ธํด์, ํด
๋น ์ฝ๋์ ๋ด๊ธด ์๊ฐ์ ์ ๋ฌ์ด ๋๊ณ , ์ด๋ก ์ธํด์ ๋นํจ์จ์ ์ธ ๋์ผ ์์
๋ฐ๋ณต์ ๋ง์ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ฌ
ํ ์ข์ ์ฃผ์(๋ด์ ๊ฒ์ ๋ด์ ์ฃผ์)์ ๋ค๋ฅธ ์๋ฅผ ๋ด
์๋ค.
์ ์ฃผ์์ ๋ง์น ์ ์์ ๊ฐ์ง์. ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ๊ณผ ์ด์ ๋ํด์ ์ด๋ป๊ฒ ํ๋ฉด ์ข๊ฒ ๋ค๋ ๊ฐ์ด๋๊น์ง ์ฃผ๊ณ ์
์ต๋๋ค. ์ฆ ํ์์์๊ฒ ์ฝ๋๋ก ๋ชป ๋คํ ์ด์ผ๊ธฐ๋ฅผ ์ ๋ฌํ๊ณ ์๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ์ฃผ์์ด ์์์ผ๋ก ์ธํด์
์ฝ๋๋ฅผ ์ ์ง๋ณด์๋ฅผ ์ํํ๋ ์ด๋ ์ฉ๊ฐํ๊ฒ ์์
์ ์์ํ ์ ์๊ฒ ์ง์. ์ด๋ฌํ ์ธก๋ฉด์ผ๋ก์ ํ์ ์์
์ ์
ํ ์ฃผ์๋ค์ ์ ์ ๋ณด๊ฒ ์ต๋๋ค.
์ ์ฃผ์๋ค์ ์์ ์ด ๋ชป ํ ๋ถ๋ถ์ ๋ํด์ ์ด์ผ๊ธฐ๋ฅผ ํด์ฃผ๋ฉด์, ๊ณ ์ณ์ผ ํ ๋ถ๋ถ์ ๋ํด์ ์ด์ผ๊ธฐ๋ฅผ ์ ๋ฌํด ์ฃผ
๊ณ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ฃผ์์ ๋จ๊ธฐ๋ ๊ฒ์ ๋ํด์ ๋ถ๋๋ฌ์ ํ์ง ๋ง๊ณ ๊ณผ๊ฐํ ์ ์ผ์ธ์. ์ด๊ฒ์ ์ ๋ ์ฐฝํผํ
ํ๋์ด ์๋๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋๋ ์ฃผ์ด์ง ์ํฉ์์ ์ต์ ์ ๋คํ๋ ์ฌ๋๋ค์ด์์์. ๊ทธ๋ฐ๋ฐ, ์ฃผ์ด์ง ์ํฉ์ ํญ์
์ ์ฝ์ด ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฏธ์งํ ๋ถ๋ถ์ด ๋น์ฐํ ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ์ด๋ฅผ ๊ฐ์ถ์ง ์๋ํ๊ณ , ๋ค๋ฅธ ํ๋ก
๊ทธ๋๋จธ ํน์ ์๊ฐ์ด ์ง๋ ๋ค ์์ ์๊ฒ ํด๋น ๋ถ๋ถ์ ๋ํด์ ๊ฐ์ด๋๋ฅผ ์ ๋ฌํด ์ฃผ๋ ๊ฒ์
๋๋ค. ์ด๋ฐ ์ฃผ์ ๋ง์ด
๋ง์ด ๋ฌ์๋์๋ก ํ๋ก๊ทธ๋จ์ ๊ฒฌ๊ณ ํด์ ธ ๊ฐ๋ ๊ฒ ์
๋๋ค.
์ด์ฒ๋ผ ์ฝ๋ ์์ฑ์์ ์๊ฐ์ ๋ด๋ ํ๋ ์ค์์ ์์ ๋ฐ๋ก ๋ถ๋ฅ๋์ด์ ์ด์ผ๊ธฐ ๋ ์ ์๋ ๋ถ๋ถ์ด ์์ต๋๋ค.
๋ฐ๋ก ์์์ ๋ํ ์ฃผ์์
๋๋ค. ์๋ ์๋ฅผ ๋ด
์๋ค. ํํ ์ฐ์ด๋ ์์์ด์ฃ .
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ด๋ค ์๊ฐ์ด ๋๋์? ๋ง์ฝ ํด๋น ์ฝ๋ ๊ฐ์ ์์ ํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์๋๋ฉด, ์ด๋ค ์๊ฐ์ด ๋จธ
๋ฆฌ ์์ ๋ค๊น์? ๋ฐ๋ก ์ 8์ผ๊น ์
๋๋ค. ๋๋ถ๋ถ ์์๋ค์ ์ฌ๋ฏธ๋๊ฒ๋ ๊ฐ์ ๊ฐ์ด ์ ํด์ง ๋ฐฐ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ๋ค
์ด ๋ง์ต๋๋ค. ์ด ์ฝ๋๊ฐ ์๋์ ๊ฐ์ด ๋์ด ์๋ค๋ฉด, ์ด๋จ์ง ๋ด๋ด
์๋ค.
์์ ๊ฐ์ด ์ฃผ์์ด ๋์ด ์์ผ๋ฉด, NUM_THREADS๋ผ๋ ์์ ๊ฐ์ ์กฐ์ ํ ๋, ์ด๋ป๊ฒ ๋์จ ๊ฐ์ ์๊ฒ ๋๋, ๋ถ
์๊ฐ ๋๋ ๊ณ ๋ฏผ ์์ด ์์
์ ํ ์ ์๊ฒ ์ง์. ์ด๋ฌํ ์์ ๋ํด์ ์ถ๊ฐ์ ์ผ๋ก ๋ ๋ด
์๋ค.
์ ์๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ์์ ๊ฐ์ ์ฃผ์์ด ๋ฌ์์ง์ผ๋ก ์ธํด์ ํ์์๋ค์ ์์ฒญ๋ ์๊ฐ์ ์ ์ฝ์ ํ ์ ์์ต
24. ๋๋ค. ๋ ๋์๊ฐ์๋ ์ ๋ชป ๋ ๊ฐ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํจ์ผ๋ก ์ธํด์ ๋ฐ์๋ ์ ์๋ ์ฅ์ ๋ ๋ฐฉ์ง๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌผ๋ก ๋ชจ๋ ์์๊ฐ ์ฃผ์ ์ฒ๋ฆฌ๋ ํ์๊ฐ ์์ง๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ SECONDS_PER_DAY ๋ผ๋ ์์๊ฐ ์
๋ค๋ฉด, ์ด ๊ฐ์ ๋ํด์ ์ฃผ์์ ๋ค๋ ๊ฒ์ ์๋ฏธ๊ฐ ์ ํ ์์ ๊ฒ์
๋๋ค.
์ค์ํ ๊ฒ์ ์ ๋ฌ๋์ด์ผ ํ ์ด์ผ๊ธฐ๋ค์ ์ฃผ์์ผ๋ก ์ฐ๋ ๊ฒ์
๋๋ค. ๊ทธ ์ธ์๋ ์ฐ์ง ๋ง์ธ์. ^^
Put Yourself in the Readerโs Shoes
์ฃผ์์ ์์ฑํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ ์์ธ๋ ๋ฐ๋ก, ํด๋น ์ฝ๋์ ๋ํด์ ์ฒ์ ์ ํ ์ฌ๋๋ค์ด ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์ ๋ญ๊ฐ๋ฅผ
์๊ฐํ๊ฒ ๋ ๋ถ๋ถ์ ์ฐพ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ก ํด๋น ๋ถ๋ถ๋ค์ด ์ฃผ์์ด ํ์ํ ๊ณณ๋ค ์
๋๋ค. ๋ฐ๋ก ์๋ฅผ ๋ณด๋ฉด์ ์๊ฐ
ํด ๋ด
์๋ค.
์ ์ฝ๋์์ ๋ณผ๋ ์ฒ๋ฆฌ๋ ๋ถ๋ถ์ ๋ณด๋ฉด ์๋ฌธ์ด ๋ค์ง ์๋์? ์ clear์ธ๋ฐ swap์ ํ ๊น? ์ด๋ฐ ์๋ฌธ์ด ๋๋
๋ฐ๋ก ๊ทธ ๋ถ๋ถ์ด ์ฃผ์์ด ํ์ํ ๋ถ๋ถ์
๋๋ค. ์ด ๋ถ๋ถ์ ๋ฐ๋ก ์๋์ ๊ฐ์ด ์ฃผ์์ ํด ๋๋ฉด ์ฝ๋ ์ฝ๋ ์ด๋ ๋ฐ
๋ก ์ฃผ์์ ๋ณด๋ฉด์, ์์ฐ์ค๋ฝ๊ฒ ์๋ฌธ ์์ด ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋๊ฒ ์ง์.
์ด๋ ๊ฒ ์ด๋ค ์๋ฌธ์ด ๋ค๋งํ ๋ถ๋ถ์ ๋ํด์ ์ฃผ์์ ๋ฌ์๋ค ํ๋ฉด, ์ด๋ฒ์๋ ๋ญ๊ฐ ์ผ์์ ์ด์ง ์์ ๋ถ๋ถ์ ๋
ํด์ ์๊ฐ์ ํด๋ด
์๋ค. ์ด์ผ๊ธฐ๋ฅผ ํด์ฃผ์ง ์์ผ๋ฉด ๋ญ๊ฐ ์ ๋ชป ์ฐ์ผ ์ ์๋ ๋ถ๋ถ์ ๋ํด์ ์ฃผ์์ ํ๋ ๊ฒ์ด
์ง์. ์๋ ํจ์๋ฅผ ์๋ก ์๊ฐํฉ์๋ค.
์ ํจ์๋ง ๋ฑ ๋ด์๋ ์๋ฌด๋ฐ ์๊ฐ ์์ด ์ด๋ฉ์ผ ๋ณด๋ด๋๋ฐ ํด๋น ํจ์๋ฅผ ์ฐ๊ฒ ์ง์. ๊ทผ๋ฐ ๋ง์ฝ ์ผ๋ฐ์ ์ ์ด๋ฉ์ผ
๋ณด๋ด๋ ํจ์์ ๋ฌ๋ฆฌ ์ ํจ์๋ ๋ด๋ถ ์ด๋ฉ์ผ ์๋ฒ๊ฐ ์๋ ์ธ๋ถ ์ด๋ฉ์ผ ์๋ฒ์ ์ฐ๊ณ๊ฐ ๋์ด์, ๊ฒฝ์ฐ์ ๋ฐ๋ผ์
๋ฉ์ผ ๋ณด๋ด๋๋ฐ, ๋ช ๋ถ์ด ๊ฑธ๋ฆด ์๋ ๋๋ ๊ทธ ์ด์์ด ๊ฑธ๋ฆด ์๋ ์์ ์ ์๊ณ , ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ 1๋ถ ์ง๋
๋ฉด timeout ์ฒ๋ฆฌ ํ๋ค๊ณ ์๊ฐํด๋ด
์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์ ๋ฐ๋์ ์ฃผ์์ ์จ ์ฃผ์ด์ผ ํฉ๋๋ค.
์ฃผ์์ด ์๋ค๋ฉด, ํด๋น ํจ์์ ๋ํด์ ๋ค๋ ํธ์ถํ๋๋ฐ, ์ง์ฐ์ด ๋๋ค๋ฉด ์น๋ช
์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๊ฒ ์ฃ . ์ด
๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ด์์ ์ผ๋ก๋ ํจ์ ์ด๋ฆ์ ๊ทธ ๋ด์ฉ์ ํฌํจ์ํค๋ฉด ์ข๊ฒ ๋๋ฐ, ๊ทธ๊ฑด ํจ์ ์ด๋ฆ์ ํฌํจ์ํค
๊ธฐ๋ ๋ถ์์ ์ธ ๋ด์ฉ์ด๋ ์๋์ ๊ฐ์ด ์ฃผ์์ ๋ฌ์๋ด
์๋ค.
์ด๋ ๊ฒ ์ฃผ์์ด ๋ฌ์์ ธ ์์ผ๋ฉด, ํด๋น ์ฝ๋๋ฅผ ๋ณด๋ ์ฌ๋์ ์ฃผ์ํด์ ํน์๋ ๋น ์ง ์ ์๋ ์ํ ์ํฉ์ ๋์ฒํ
25. ๊ฑฐ๋ ์ ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ฒ ์ง์. ์ด๋ฌํ ์ด์ ์ํฉ์ ๋ํ ์ฃผ์์ ๋ ๋ค๋ฅธ ์๋ก ์๋์ ๊ฐ์ด ์ฃผ์์ ๋ฌ์๋๋
๊ฒ๋ ์ข์ ์ฃผ์์ด๋ผ ํ ๊ฒ์
๋๋ค.
์ง๊ธ๊น์ง๋ ํจ์ ๋ ๋ฒจ ์ธก๋ฉด์์ ์ฃผ์์ ๋ํด์, ๋ง์ด ์๊ฐํด ๋ณด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ค ์ฝ๋๋ฅผ ์ดํดํ ๋์๋
์ ์ฒด์ ์ธ ๊ทธ๋ฆผ ์ด๋ฅธ๋ฐ big picture์ ๋ํ ๋ฌ์ฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ํ ๋ด์ฉ์ด ๊ทธ๋ฐ ๋ด์ฉ์ผ์ง์
๋ํด์๋ ํ์ฌ๊น์ง ์์ฑ๋ ์ฝ๋๋ฅผ ์ ๊ท ์ฌ์์๊ฒ ์ด์ผ๊ธฐ๋ฅผ ํ ๋, ์ ๋ฌํ๋ ๋ด์ฉ๋ค์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋
๋ค. ์๋ฅผ ๋ค์ด์ โ์ด ํด๋์ค๋ ์ด๋ค ํด๋์ค์ ๊ฐ์ด ๋์์ ํ๊ณ , ์ด ์ฝ๋๋ค์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ฅผ ์ฐ๊ณํ๋ ์ฝ๋๋ก์ ์ ๋ ๋ค๋ฅธ ๊ณณ์์๋ ์ง์ ์ ์ผ๋ก ๋ณธ ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ฉด ์๋๊ณ โฆโ ์ด๋ฌํ ์ด์ผ๊ธฐ๋ค์ด ๋ฐ
๋ก big picture์ ๋ํ ์ด์ผ๊ธฐ ์ด๋ฉฐ, ์ฐ๋ฆฌ๋ ์ด ๋ด์ฉ์ ๋ฐ๋์ ์ฃผ์์ผ๋ก ์ฝ๋์ ์ ์ด๋์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ
์๋ก ์๋์ ๊ฐ์ ์ฃผ์์ด ์์ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ด๋ ๊ฒ ์์ฑํ ๋, ๋๋ฌด ์ ์ฐ๋ ค๊ณ ๋ถ๋ด์ ๊ฐ์ง์ง ๋ง์ธ์. ํฐ ๊ทธ๋ฆผ์ ๋ํด์ ์ด์ผ๊ธฐ ํด์ฃผ๋ ๊ฒ ์์ฒด๊ฐ
ํจ์ฌ ์ค์ํ๋๊น์.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ํด๋์ค๋ ํ์ผ ๋จ์์ ๋ํด์ ๊ตญํ๋ ์ด์ผ๊ธฐ๋ ์๋๋๋ค. ํฐ ๊ทธ๋ฆผ์ ๋ํด์, ์ด์ผ๊ธฐ๊ฐ ํ์ํ
๊ฒฝ์ฐ์๋ ์ธ์ ๋ ๊ฐ๋ณ๊ฒ ํฐ ๊ทธ๋ฆผ์ ์ค๋ช
ํด์ ์๋ ๋ด์ฉ ์ดํด๋ฅผ ์ฝ๊ฒ ํด์ฃผ์๋ ๊ฒ์ด ํต์ฌ์
๋๋ค. ์ด๋ฌํ ์
๋ก ์๋ ์ฝ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค.
๋ฃจํ ๋ด๋ถ ๋ด์ฉ์ ๋ค ๋ณด๋ฉด ์๊ฒ ์ง์. ๊ทธ๋ ์ง๋ง, ์์ ๋กํ๋ ํฐ ๊ทธ๋ฆผ์ ๋ํด์ ์ฃผ์์ ๋ฌ์์ฃผ๋ ์ธ๋ถ์ ์ธ ์ฝ
๋ ๋ด์ฉ์ ๋ณด์ง ์๊ณ ๋ ์ดํดํ๊ธฐ๊ฐ ์ฐธ ์ข๊ฒ ์ง์. ์ด๋ฐ๊ฒ ๋ฐ๋ก ํฐ ๊ทธ๋ฆผ์ ๋ณด์ฌ์ฃผ๋ ์ฃผ์์
๋๋ค. ์ด๋ฐ ์ ์ฌํ
์ฃผ์์ผ๋ก๋ ์ ์ฒด์ ์ธ ๋
ผ๋ฆฌ ๋ฌถ์์ ๋ํ ์ฃผ์์
๋๋ค. ์ด ๋ถ๋ถ์ ๋ฉ์๋๋ก ๋ถ๋ฆฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ํ๋์ด์ง๋ง,
๊ทธ๋ ์ง ๋ชป ํ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ์ฃผ์์ ์จ์ฃผ๋ฉด ์ฝ๋ ์ด๋ ์ฝ๊ธฐ ํธํ๊ฒ ์ง์. ์ด๊ฒ ๋ฐ๋ก ์ข์ ์ฃผ์์
๋๋ค.
26. ์ง๊ธ๊น์ง ์ฃผ์์ ์์ฑํ๋ ๋ถ๋ถ์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌด์๋ณด๋ค ์ค์ํ ๊ฒ์ ์ฝ๋ ์ฃผ์ ์ฐ๋ ๊ฒ
์ ๋๋ ค์ํ์ง ์๋ ๊ฒ์
๋๋ค. ์์๊ฒ ์ฃผ์์ ์ฐ๋ ๊ฒ์ด ์๋๋, ๋ด๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์๊ฐํ ๋ด์ฉ์ ์ฝ
๋์ ํจ๊ป ์ ์ด๋๋ค๋ ๋ง์์ผ๋ก ์ฐ์ ์ ์ผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๋ง๋ฌด๋ฆฌ๋ฅผ ํ๋ฉด์ ๊ณผํ์ง ์ ๋ฆฌ๊ฐ ํ์ํ์ง๋ฅผ ํ์ธํ
๊ณ ์ ์ ํ ์ง์ฐ๊ฑฐ๋ ๊ณ ์น๋๋ก ํฉ๋๋ค. ์ฃผ์ ์์ฒด์ ๋ํ ๋ถ๋ด๊ฐ์ผ๋ก ์ฃผ์์ ๋๋ ค์ํ์ง๋ ๋ง์์ผ ํจ์ ๋ค์
์ด์ผ๊ธฐ ๋๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ ๋ ๊ทธ๋ ๋ฏ ์ฝ๋๋ฅผ ์ฝ๋ ์
์ฅ์์ ์ฝ์ผ๋ฉด์, ์ฝ๊ธฐ ์ข๊ฒ ๋ง๋ค๋๋ก ๋ค๋ฌ๋ ๋ง์์ด
์ ์ผ ์ค์ํ์ฃ ^^
Summary
์ฃผ์์ ์ฐ๋ ๊ฒ์ ๋ด๊ฐ ํ๋ก๊ทธ๋จ์ ์ง๋ฉด์, ์๊ณ ์๋ ๋ด์ฉ์ธ๋ฐ, ์ฝ๋๋ก ํํ๋์ง ์๋ ๋ด์ฉ์ ์ ์ด์ ์ฝ๋
๋ฅผ ์ฝ๋ ์ด์๊ฒ ์ ๋ฌ๋ ๋ด์ฉ์ ์ ๋ฌํ๊ฑฐ๋ ์ดํดํ๊ธฐ ํธํ๊ฒ ํด์ฃผ๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ์ํด์ ๊ฐ๋จํ ๊ฐ์ด๋๋ฅผ
์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๏ฌ ์ฃผ์ ๋ฌ์ง ๋ง์์ผ ํ ๊ฒ
๏ฎ ์ฝ๋ ์์ฒด์์ ๋ฐ๋ก ์ฝํ๋ ๋ด์ฉ ๋์ด
๏ฎ ์๋ชป๋ ์ฝ๋ ์ด๋ฆ์ ๋ณด์ถฉํ๊ธฐ ์ํ ์ฃผ์. ์ฃผ์ ๋์ ์ด๋ฆ์ ์์
๏ฌ ์ฃผ์์ผ๋ก ํ์ถ๋์ด์ผ ํ ๊ฒ
๏ฎ ์ฝ๋๊ฐ ์ด๋ ๊ฒ ์์ฑ์ด ๋๊ฒ ๋ insight๋ ๋ฐฐ๊ฒฝ
๏ฎ ์ฝ๋์ ๋ํด์ ์์ ๋์ด์ผ ํ ๋ถ๋ถ์ด๋ ํฅํ ์งํ๋ ๋ถ๋ถ
๏ฎ ์์๋ค์ ํด๋น ๊ฐ๋ค์ ๊ฐ์ง๊ฒ ๋ ๋ฐฐ๊ฒฝ
๏ฌ ์ฝ๋ ์ด ์
์ฅ์์ ๋์์ ์ฃผ๊ธฐ ์ํด์ ์ถ๊ฐํด์ผ ํ ์ฃผ์
๏ฎ ์ฝ๋ ์ฝ์ ๋, ๋ญ๊ฐ ์๊ฐํ๊ฒ ๋ ๋ถ๋ถ์ ๋ํ ์ค๋ช
๏ฎ ์ผ์์ ์ด์ง ์์ ๋ถ๋ถ์ ๋ํ ์ฃผ์ง๋ฅผ ์ํ ๋ด์ฉ
๏ฎ ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์ ์๋ ค์ฃผ์ด ์ดํด๋ฅผ ํธํ๊ฒ ํด ์ค ์ ์๋ ๋ด์ฉ
๏ฎ ์ธ๋ถ ๋ด์ฉ์ ์์ฐ๋ฅด๋ ๊ธฐ๋ฅ ๋ฌถ์์ ๋ํ ์์ฝ ์ฃผ์
์ด๋ฌํ ์ฃผ์์ ์ ํํ๋ ๊ธฐ๋ณธ ์์น์ good code > bad code + good comments. ์
๋๋ค.Good code๋ฅผ ์์ฑํ๊ณ
์ฝ๋์๋ ๋ํ๋์ง ์๋ ์ค์ํ ์ด์ผ๊ธฐ๋ค ๋๋ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ข๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋ด์ฉ์ ์ฃผ์์ผ๋ก ๋ณด๊ฐํด์ ์ฝ
๊ธฐ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ด
์๋ค.
27. Chapter 6. Making Comments Precise and Compact
์์์๋ ์ด๋ค ํญ๋ชฉ์ ์ฃผ์์ ๋ฌ์์ผ ํ๋๊ฐ์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ์ด์ ๋ ์ด๋ค ๋ด์ฉ์ ์ฃผ์์ผ๋ก ์จ์ผ
ํ๋ ์ง๋ฅผ ๋์ด์, ์ด๋ป๊ฒ ์ฐ๋ฉด ์ข ๋ ์ฝ๊ธฐ ์ข์๊น๋ผ๋ ์๊ฐ์ ํด๋ด
๋๋ค.
์ฐ์ ๊ธฐ๋ณธ์ ์ฃผ์๋ ์ฝ์ด์ผ ํ๋ ๋ด์ฉ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ ๋ณด๋ฅผ ์ต์ํ๋ฅผ ํด์ ํ์ํ๋๋ก ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ต์ํ๋ฅผ ํ๋ฉด์๋, ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์ดํดํ๊ธฐ ์ข๋๋ก ํด์ฃผ๋ฉด ์ข๊ฒ ์ง์. ์ด๋ฌํ ์ธก๋ฉด์ ์์ ๋ฅผ ํตํด์
๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์
๋๋ค. ๊ฐ๋จํ ์๋ฅผ ์๊ฐํด ๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
// int๋ CategoryType์ด๋ค.
// ๋ด๋ถ pair์ ์ฒซ๋ฒ์งธ float๋ score์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ๋ Weight์ด๋ค.
Typedefhash_map<int, pair<float, float>>ScoreMap;
์ผ์์ ์ธ ์ฃผ์์ด์ง ์๋๊ฐ? ๊ทธ๋ฐ๋ฐ ๋๋ฆ ์๋ฅผ ํ์ฉํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์๋ ์๋ค.
// ํญ๋ชฉ: CategoryType, <score, weight>
Typedefhash_map<int, pair<float, float>>ScoreMap;
๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์๋ ํญ๋ชฉ์ด ๋ ์ดํดํ๊ธฐ ํ๋ค ์๋ ์๋ค. ๊ทธ๋ ๋ค๋ฉด, ์คํ๋ ค ์์ ์ฃผ์์ ์จ์ผ ํ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์ฃผ์์ ์ฐ๋ ์ด์ ๋ ์ข ๋ ์ฝ๊ฒ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์
์ด์ผ๊ธฐ ํ๊ณ ์ ํ๋ ๊ฒ์ ๋ฐ๋ก ์์ ๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ๋ฐฑ๋ง๋ ๋ง๋ณด๋ค ๋ช
ํํ ์๋ฏธ ์ ๋ฌ์ ํ ์ ์๋ค๋ ์ฌ
์ค์
๋๋ค.
์ฃผ์์ ์ด๋ป๊ฒ ์ฐ๋๊ฐ์ ๋ํด์ ๋ณด๊ณ ์์ง๋ง, ์ฃผ์์ ๋ง ๊ทธ๋๋ก ์ดํด๋ฅผ ๋๊ธฐ ์ํ ์ฒจ์ธ์ด๊ธฐ ๋๋ฌธ์, ๊ธ์ ์
์จ์ผ ํ๋ค๋ ๊ธฐ๋ณธ ์ ์ ์์ ๋ฒ์ด๋์ง ์์ต๋๋ค. ์ ์ด ๊ธ์ ๊ฐ๋ตํ๋ฉด์๋ ๋ช
์พํ๊ฒ ์๋ฏธ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์
๋
๋ค. ์ด๋ฐ ์ธก๋ฉด์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ฅ๋ค์ ๋ณด๊ณ , ์ด๋ฅผ ์ด๋ ๊ฒ ์ฐ๋ฉด ๋ ๋ซ์ง ์์๊น๋ผ๋ ์๋ฏธ์์ ๋ช๋ช ๊ฒฝ์ฐ๋ฅผ
์ดํด ๋ณด๋๋ก ํฉ๋๋ค.
๏ฌ ๋ชจํธํ ์ง์นญ์ ํผํ์
๏ฎ ๋์ ์: ๋ฐ์ดํฐ๋ฅผ ์บ์ฌ์ ๋ฃ๊ธฐ ์ ์, ๊ทธ๊ฒ์ด ํฌ๊ธฐ๊ฐ ์ ๋นํ ๋จผ์ ํ์ธํฉ๋๋ค.
๏ฎ ์ข์ ์: ๋ฐํฐํฐ๋ฅผ์บ์ฌ์ ๋ฃ๊ธฐ ์ ์, ๋ฐ์ดํฐ๊ฐ ์บ์ฌ ํฌ๊ธฐ๋ณด๋ค ์์์ง ํ์ธํฉ๋๋ค.
๏ฌ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๋ฉด, ์ฝ๊ฒ ์จ๋ผ.
๏ฎ ๋์ ์: ์ด URL์ ์ด๋ฏธ ๋ฐฉ๋ฌธํ๋์ง์ ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค.
๏ฎ ์ข์ ์: ์ ์ ๋ฐฉ๋ฌธํ์ง ์์ URL์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํฉ๋๋ค.
๏ฌ ๋ถํ์คํ ๋ถ๋ถ์ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ์.
28. ๏ฎ ๋์ ์: ์ด ํ์ผ์ ๋ด๊ธด ์ค ์๋ฅผ ๋ฐํํฉ๋๋ค.
๏ฎ ์ข์ ์: ํ์ผ ์์ ์ ์ค์ ๋ํ๋ด๋ n ๊ฐ์๋ฅผ ์ธ์ด์ ๋ฐํํฉ๋๋ค.
์ด๋ ๊ฒ ์ฃผ์์ ์์ฑํ ๋ค์ ์ฝ์ด๋ณด๊ณ , ๋ช
ํํ๊ฒ ๊ทธ๋ฆฌ๊ณ ์ดํดํ๊ธฐ ์ข์ ๋ฌธ์ฅ์ ๋
ธ๋ ฅํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋
๋ค. ๋์ ๋ฌธ์ฅ ํ๋ํ๋๋ฅผ ๋ชจ๋ ๋ณด์ฌ์ค ์๋ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋๋, ๊ฐ๋จํ ํ์ ๋๋ฆฌ๋ฉด ํ์ค์ ์ด ๋์์ด
๋ ์ ์์ ๊ฒ ๊ฐ์์ ํ์ ์๋ ค๋๋ฆฝ๋๋ค.
๏ฌ ์ฝ๋ ์์ฒด์ ๋ํ ์ค๋ช
์ด ์๋ ์๋๋ฅผ ์ค๋ช
ํฉ๋๋ค.
๏ฎ producst.sort(CompareProductByPrice);
for(list<Product>::reverse_iterator it = products.rbegin(); it != products.rend(); ++it) {
DisplayPrice(it -> Price);
โฆโฆ
}
๏ฎ ์ ์ฝ๋์ ๋ํด์, โ๊ฐ๊ฒฉ์ผ๋ก ์ ๋ฆฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ญ์์ผ๋ก ๋๋ฉด์ ๊ฐ๊ฒฉ์ ํ์ํฉ๋๋ค.โ์ ๊ฐ์ด
์ฝ๋๋ฅผ ์ฝ์ด์ ์ฃผ์์ ๋ฌ๊ธฐ ๋ณด๋ค๋, โ๊ฐ๊ฒฉ์ ๋์ ๊ฐ์์ ๋ฎ์ ๊ฐ ์์ผ๋ก ํ์๋ฅผ ํฉ๋๋ค.โ๋ผ๊ณ
์ฝ๋์ ๋ํ ์๋๋ฅผ ์ค๋ช
ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๏ฌ ๊ฒฝ์ฐ ๋ฐ๋ผ์๋ ํ๋ผ๋ฏธํฐ์ ์ฃผ์์ ํด์ฃผ๋ ๊ฒ๋ ๋ฐ๋์งํ๋ค.
๏ฎ Connect(10, false, 5);
๏ฎ ์ ํจ์์ ๋ํด์ primitive ์ ํ์ด ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ์ ์ ๋ฌํ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ์ด๋ค ์๋ฏธ์ธ์ง
์ฝ๋๋ฅผ ์ฝ์ ๋ ์์๋ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์์ ํ์ฉํ๋ฉด ์ข ๋
์ดํดํ๊ธฐ ์ข์ต๋๋ค. ๋ฌผ๋ก ํ๋ก๊ทธ๋จ ์ธ์ด ์์ฒด์์ ๋ณ์ ์ด๋ฆ์ ์ง์ ํด์, ํธ์ถ๋ ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ํด๋ณด๋ ๊ฒ์ ํ์ผ๋ก ๋๋ฆฝ๋๋ค.
๏ฎ Connect( /* timeout_ms= */ 10, /* use_encryption= */ false, /* max_retry_times= */ 5);
๏ฌ ๋๋ฉ์ธ์ ๋ํ ์ ๋ณด๋ฅผ ์๋ ๊ฒฝ์ฐ์๋ ๋๋ฉ์ธ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ข๋ค.
๏ฎ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ํ๋ ๊ฒฝ์ฐ์ ์บ์๋ผ๋ ๊ฐ๋
์ ๋๋ถ๋ถ์ด ์๊ณ ์๋ค๊ณ ๊ฐ์ ์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ง์ฝ ์บ์ฌ์ ๋ํด์ ํ์ด์ ๊ธธ๊ฒ ์ค๋ช
ํ๊ธฐ ๋ณด๋ค๋ ํด๋น ๊ธฐ๋ฅ์ด ์บ์ฌ ๊ธฐ๋ฅ์ ํ๋ค๊ณ
๋ผ๊ณ ์งง๊ณ ๋ช
ํํ๊ฒ ์ ๋ฌ์ด ๊ฐ๋ฅํฉ๋๋ค.
๏ฎ ์บ์ฌ๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ด๋ ๊ฒ ๊น์ง ์ธ ์ ์์ต๋๋ค. ^^;;
๏ต ์ด ํด๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ์ ๋ณด๋ฅผ ๋ด๋ ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด๋ ์๋๋ฅผ ํฅ
์์ํค๋๋ฐ ์ฌ์ฉ๋๋ค. ๋์ค์ ์ด ํด๋์ค๊ฐ ์ฝํ๋ฉด, ๋ฉค๋ฒ ๋ณ์๊ฐ ๊ฐ์ ๊ฐ์ก๋์ง๋ฅผ ํ์ธํ
๊ณ , ๋ง์ฝ ๊ฐ์ด ์์ผ๋ฉด ๊ทธ ๊ฐ์ ๋ฐํํ๋ค. ๊ฐ์ด ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ด ์ฝํ์ ธ์
์ ๋ฌํ๋ ๋์์, ๋์ค์ ์ด์ฉ๋ ์ ์๊ฒ ๋ฉค๋ฒ์ ๊ฐ์ ์ ์ฅํ๋ค.
29. ๏ฎ ์ด๋ ๊ฒ ์ฐ๊ธฐ ๋ณด๋ค๋ โ์ด ํด๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์บ์ ๊ณ์ธต์ผ๋ก ๊ธฐ๋ฅํ๋ค.โ๋ผ๊ณ ๋ช
๋ฃํ
๊ณ ์งง๊ฒ ์ ๋ฌ์ด ๊ฐ๋ฅํฉ๋๋ค.
๏ฌ ์์ ๋ฅผ ์ ๊ทน ํ์ฉํฉ์๋ค.
๏ฎ ์ด๋ค ํจ์๊ฐ ๋์์ ํ๋๊ฐ์ ๋ํด์ ์ค๋ช
์ ํ๊ธฐ ๋ณด๋ค๋, ์ ์ ํ ์๋ฅผ ํตํด์ ์ค๋ช
์ ํด์ฃผ๋
๊ฒ์ด ์ข์ต๋๋ค. ์ด์ ๋ํ ์๋ ๊ณ ๋ฏผ์ด ๋ ์ ์๋ ๊ฒฝ์ฐ๋ค์ ํ๋ํ๋ ์ ๋ณํด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ
์ด ์ข์ต๋๋ค.
๏ฎ ์ ๋ณํ๋ ๊ธฐ์ค์ ์ฌ์ฉ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ ๋งคํ๊ฒ ๋๋ ๋ถ๋ถ๋ค ๋ค์
๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค
์๊ณผ ๊ฐ์ต๋๋ค.
๏ต โunhappyโ.substring(2) = โhappyโ
โunhappyโ.substring(7) = โโ
์ด๋ ๊ฒ ๊ฐ๋จํ ๊ฐ์ด๋๋ฅผ ๋๋ ธ์ง๋ง, ์ด๋ฌํ ๋ช๊ฐ์ง ํ์ ๋ด๊ธด ๊ธฐ๋ณธ์ด ๋๋ ๋ง์. ์ฝ๋ ์ด๊ฐ ํธํ๊ฒ ์ฝ์ ์
์๋๋ก ์ฃผ์์ ํ์ํ ๋ถ๋ถ์ ์งง๊ณ ๋ ๋ช
ํํ๊ฒ ์ ๋ฌํ๋ค๋ ๋ง์์ ํญ์ ๊ฐ์ง๊ณ ์ฃผ์์ ์ฐ๋๋ก ํฉ์๋ค.