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
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์ฒœ

๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋‚ด์šฉ์ด ๋” ์ข‹๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, ์ดํ•ด๊ฐ€ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด์•ผ๊ธฐ
ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


"So even though having fewer lines of code is a good goal, minimizing the time-till-understanding is an even

better goal."


์•ž์„œ ์–ธ๊ธ‰ํ•œ ์˜ˆ ์™ธ์—๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์š”์†Œ๋“ค์ด ํ˜น์‹œ๋‚˜ readableํ•œ ์ฝ”๋“œ์™€ ์ƒ์ถฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜

๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ƒ๊ฐํ•ด์„œ ์–ด๋–ค ์„ฑ๋Šฅ ์ข‹

์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์•ผ๋งŒ ์„ฑ๋Šฅ์ด ์ข‹๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์˜ค

ํžˆ๋ ค ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“œ๋Š” ์ž‘์—…์€ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๋ฉ‹์ง„ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋Ÿผ ์ง€๊ธˆ๊นŒ์ง€ ์ด์•ผ๊ธฐํ•œ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ญ˜๊นŒ์š”? ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์ˆ ๋ณด

๋‹ค๋„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํƒ€์ธ์˜ ์ž…์žฅ์—์„œ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜๋Š” ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋‚˜

๋Š” ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์•Œ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅธ ์ด ์ž…์žฅ์—์„œ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋ณด๋ ค๋Š” ๋งˆ์Œ ์ž์„ธ๋ฅผ

๊ฐ€์ง€๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„, ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ๋ณด๋‹ค ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์ค„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€

์ง€ ํŒ์œผ๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์— ๋‚ด ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์•„๋ฌด๋Ÿฐ ์–ธ๊ธ‰๋„ ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ด์—๊ฒŒ ์ฝ๊ฒŒ ํ•ด๋ณด์„ธ์š”. ๊ทธ๋Ÿฌ

๋ฉด, ๋”์šฑ ๋ช…ํ™•ํžˆ ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ์ธ๊ฐ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.
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๊ณผ ๊ฐ™์€. ๋ฌผ๋ก 
๊ทธ ์ž์ฒด๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์„ ๊ตํ™˜ํ•˜๋Š”๋ฐ ์ž„์‹œ์ €์žฅ์†Œ ๊ณต๊ฐ„์œผ๋กœ

์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐ”๋กœ ๊ทธ ๊ฒฝ์šฐ์ด์ฃ .


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


์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์ข€ ๊ธธ์–ด์ง€๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ, ์ ์ ˆํ•œ ๋ณ€์ˆ˜๋ฅผ ์ ์ ˆํžˆ ์œ„์น˜์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์–ด ๋ฒ„๊ทธ ์œ ๋ฐœ์ž๋ฅผ ์ œ
๊ฑฐํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ๋‹ค ์ฃผ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


์ด์ฒ˜๋Ÿผ, ์–ด๋–ค ๊ฐ’์— ๋Œ€ํ•ด์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์˜๋ฏธ๋ฅผ ๊ตฌ๋ถ„ ์ง€์„ ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์ค„ ์ƒ๊ฐ์„ ํ•œ ๋ฒˆ ํ•ด๋ณด์„ธ

์š”. ๊ทธ๋ ‡๊ฒŒ ํ•œ ๋ฒˆ ํ•˜๋Š” ์ƒ๊ฐ์ด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ข‹๊ฒŒ, ๊ทธ๋Ÿฌ๋ฉด์„œ๋„ ๋ฒ„๊ทธ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.


๊ฐ€์ด๋“œ 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;
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ์ž์ฒด๋กœ ๋ช…๋ฃŒํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””์—์„œ ์‚ฌ์šฉ์ด ๋˜๋”๋ผ๋„, ๋ชจ๋‘๋“ค ์ด๊ฒŒ 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๋ผ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ, ๊ธธ์ด์— ๋Œ€ํ•œ ์ œ์•ฝ์€ ๋น„์ƒ์‹์ ์œผ๋กœ ๊ธธ์–ด์ง€๋Š” ๊ฒƒ์€ ๊ฒฝ๊ณ„ํ•˜๋ฉด์„œ๋„, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ด์„œ ํ˜ผ๋ˆ์ด ๋˜์ง€ ์•Š์„

์ˆ˜์ค€์—์„œ๋Š” ์งง๊ฒŒ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธธ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ฐ€์ด๋“œ 7. Use Name Formatting to Convey Meaning

์ด๋ฆ„์€ ํ•˜๋‚˜์˜ ์ฝ”๋ฉ˜ํŠธ๋ผ๋Š” ๊ด€์ ์— ํฌ๋งท์„ ํ™œ์šฉํ•ด์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํด๋ž˜

์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ m_pageHeight ์™€ ๊ฐ™์ด โ€˜m_โ€™๋ฅผ ์•ž์— ๋ถ™์ธ๋‹ค๊ณ  ํ•˜๋ฉด, ์ด ์ž์ฒด๋กœ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌ

ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ผํ™˜์œผ๋กœ ์ƒ์ˆ˜ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ๋ชจ๋“  ๊ฐ’์„ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋„ ํ™œ์šฉ์˜ ํ•œ ์˜ˆ

์ž…๋‹ˆ๋‹ค. ์–ธ๋”์Šค์ฝ”์–ด(_), ๋Œ€์†Œ๋ฌธ์ž ๋ฐ ๊ธฐํƒ€ ๊ธฐํ˜ธ๋“ค์„ ํ™œ์šฉํ•ด์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡

๊ฒŒ ํฌ๋งท์„ ํ†ตํ•ด์„œ ์ •๋ณด ์ „๋‹ฌํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


โ€œ์–ด๋– ํ•œ ํฌ๋งท์„ ์‚ฌ์šฉํ•ด์„œ ์ •๋ณด ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค๋งŒ, ๊ฒฐ์ •์„ ํ–ˆ๋‹ค๋ฉด ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ๋Œ€

ํ•ด์„œ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ ์šฉ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.โ€
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์ด๋ผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ๋ช…๋ฃŒํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต

๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ˜น์ž๋Š” ์ฃผ์„์„ ์ž˜ ๋‹ฌ๋ฉด ๋˜์ง€ ์•Š๊ฒ ๋ƒ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์šฐ์„  ๋ช…๋ฃŒํ•˜๊ฒŒ ์ด๋ฆ„์„ ์ง€์–ด๋‘

๋ฉด ๊ตฌ์ง€ ์ฃผ์„๊นŒ์ง€ ์•ˆ ์ฐพ์•„๋ด๋„ ์ดํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ทธ ๊ฒƒ์œผ๋กœ ์กฑํ•˜์ง€ ์•Š๋‚˜์š”. ์ด๋Ÿฐ ์šฉ๋„๋กœ ์“ฐ์ด๋Š” ์ข‹์€ ๋‹จ
์–ด๋“ค๋กœ์„œ 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๋ถ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ํ•จ์ˆ˜๊ฐ€ ์ด๋ ‡
๊ฒŒ ๋„๋Š” ๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ณ (?) getMean์„ ์ˆ˜์‹œ๋กœ ํ˜ธ์ถœํ–ˆ๊ณ , ๊ฒฐ๊ตญ ์„œ๋น„์Šค ์žฅ์• ๋กœ ์ด์–ด์ง„ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ

๊ฒฝ์šฐ ์ฒ˜๋Ÿผ ๊ด€ํ–‰์ ์ธ ๊ฐœ๋…์€ ์–ด๋А ์ •๋„ ์ง€์ผœ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์ด์™€ ์œ ์‚ฌํ•œ ์‚ฌ๋ก€๋กœ, size ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๊ตฌ์กฐ์ฒด๋Š” size๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณ„์‚ฐ

ํ•ด ๋‚ด๋Š” ์†๋„๋Š” O(1)๋กœ ์ƒ๊ฐํ•˜๊ณ ๋Š” ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋งŒ์•ฝ O(n2) ์†๋„๋กœ ๊ณ„์‚ฐ์ด ๋œ๋‹ค๋ฉด. ์ด ์ด๋ฆ„๋งŒ์œผ๋กœ ํ•ด๋‹น

ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋Ÿด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒ์ด๋ผ๋„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฐ”๋กœ ์ด๋Ÿฐ ๋ถ€๋ถ„์ด ๋ฏธ๋ฌ˜ํ•˜์ง€๋งŒ, ๊ด€ํ–‰์ ์ธ ์˜๋ฏธ๋ฅผ ๋„˜๋Š” ๊ฒฝ

์šฐ์ž„์—๋„ ์ด๋ฅผ ๋™์ผ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์„œ ์˜คํ•ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ๋“ค์ž…๋‹ˆ๋‹ค.


์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์™ธ์—๋„ ๋งŽ์€ ๊ฒฝ์šฐ๋“ค์ด ์šฐ๋ฆฌ๋Š” ์‰ฝ๊ฒŒ ์ด๋ฆ„์„ ์ง“์ง€๋งŒ, ๋‹ค์‹œ ๋ณด๋ฉด ๋ช…ํ™•ํžˆ ์ „๋‹ฌ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€

๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋ฏธ๊ตญ ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋‹ˆ, ๋”์šฑ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋“ค์ด ์žˆ๊ฒ ์ฃ . ๊ทธ๋Ÿฌ๋‹ˆ ์šฐ๋ฆฌ ์ข€ ๋” ์‹ ๊ฒฝ์„ ์จ์„œ

์ด๋ฆ„์„ ์˜คํ•ด ๋˜๋Š” ํ˜ผ๋ˆ์ด ์—†์„ ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์„ ํƒํ•˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ๋ฉด์—์„œ ๋ณผ

๋•Œ ๋ฐฉํ–ฅ์„ฑ์„ ์ฃผ์˜ํ•ด์„œ ๋ณด๋ฉด ์ข€ ๋” ๋ช…๋ฃŒํ•œ์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด๋ฆ„์ด ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํ•ด์„์ด ๋˜๋Š”์ง€ ์•„๋‹ˆ

๋ฉด ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ๋„ ํ•ด์„์ด ๋˜๋Š”์ง€, ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด์ง€์š”.


๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•˜๋Š” ๋ฉด์—์„œ ์‹ค๋ก€๋ฅผ ํ•˜๋‚˜ ๋” ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Is_overwrite๋ผ๋Š” Boolean ๊ฐ’์ด ์žˆ

์Šต๋‹ˆ๋‹ค. Is_overwrite = true; ๋ผ๋ฉด ์ด๊ฒŒ ๋ฌด์Šจ ์ด์•ผ๊ธฐ์ผ๊นŒ์š”? ์ดํ•ด๊ฐ€ ๋˜์‹œ๋‚˜์š”? ์ฐธ๊ณ ๋กœ overwrite๋ผ๋Š” ๊ฒƒ์„ ๋ฎ

์—ˆ๋Š” ๋™์ž‘์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฉด์—์„œ overwrite์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ดํ•ด๊ฐ€ ๋˜์‹œ๋‚˜์š”? ๋งŒ์•ฝ can_overwrite = false; ๋ผ๋ฉด ์ด

ํ•ด๊ฐ€ ๋˜์‹œ๋‚˜์š”? ๋‘๋ฒˆ์งธ ๊ฒƒ์€ ๋ง๊ธ€ ๋ฐฉ์ง€๋˜์–ด๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” is_overwrite๊ฐ€ ๋ง๊ธ€ ๋ฐฉ

์ง€ ์ƒํƒœ์ธ๊ฐ€๋ผ๋Š” ๊ฒƒ์„ ๋ฒˆ์—ญํ•˜๋ฉด์„œ, ์‚ฌ์šฉํ•œ ๋ณ€์ˆ˜์ด๊ณ , ๊ทธ ์˜๋ฏธ๊ฐ€ ์—‰๋šฑํ•˜๊ฒŒ ํ˜ผ๋ˆ์„ ์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ•˜๋‚˜์˜ ์˜ˆ์ผ ๋ฟ, ์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜๋„ ๋งŽ์€ ์ด๋ฆ„๋“ค์„ ์ง“๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋А๋ผ๊ณ  ๋‹ค์‹œ ํ•œ

๋ฒˆ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Chapter 4. Aesthetics (์•„๋ฆ„๋‹ค์›€์— ๋Œ€ํ•˜์—ฌ)

์ฑ…์„ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ์ฑ…์€ ๋™์ผํ•œ ๋‚ด์šฉ์ž„์—๋„ ๋ฌธ๋‹จ์„ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋ฅผ ํ•˜๊ณ , ๊ทธ๋ฆผ ๋ฐฐ์—ด์„ ์–ด๋–ป๊ฒŒ ํ•˜๊ณ  ํฐํŠธ๋ฅผ

์–ด๋–ค ํฌ๊ธฐ๋กœ ํ•˜๋Š”๊ฐ€์™€ ๊ฐ™์€ ์ ์— ๋”ฐ๋ผ์„œ ๋…์ž์—๊ฒŒ ๋‹ค๊ฐ€์˜ค๋Š” ์ •๋„๊ฐ€ ๋งŽ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ฉด์—์„œ ์ข‹์€ ์ฑ…์€

๋™์ผํ•œ ๋‚ด์šฉ์ด๋ผ๋„ ์ˆ ์ˆ  ๋„˜์–ด๊ฐ€๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€์š”. ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฒˆ์— ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ฐ”๋กœ

์ด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒŒ ์ฝ”๋“œ์—์„  ์–ด๋–ป๊ฒŒ ๋ณด์ผ๊นŒ์š”? ์•„๋ž˜ ์˜ˆ๋ฅผ ํ†ตํ•ด์„œ ๋А๊ปด ๋ด…์‹œ๋‹ค.




์–ด๋–ค๊ฐ€์š”? ๋ณด๊ธฐ ์ข‹์€๊ฐ€์š”? ์ด์™€ ๋™์ผํ•œ ๋‚ด์šฉ์ธ๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.




์ด๊ฒŒ ๋ฐ”๋กœ ์–ด์ฐŒ ๋ณด๋ฉด ์ฝ”๋“œ์— ์žˆ์–ด์„œ ๋ณธ์งˆ์€ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ์™ธํ˜•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์ด๋“ค์ด ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ฝ์„

์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ œ ์ด๋Ÿฌํ•œ ๊ด€์ ์—์„œ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”

๋‚ด์šฉ๋“ค์„ ์‚ดํŽด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


Rearrange Line Breaks to Be Consistent and Compact

๋ณดํ†ต ์šฐ๋ฆฌ๋Š” 80์ž ๊ธธ์ด๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ, ์ค„๋„˜๊น€์„ ๋ฌด์‹ฌ์ฝ” ์‚ฌ์šฉํ•˜๊ณ ๋Š” ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด

์„œ ์ข€ ๋” ์‹ ๊ฒฝ์„ ์“ฐ๋ฉด ์ข€ ๋” ํšจ๊ณผ์ ์ธ ์ •๋ณด ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋ณด๋ฉด์„œ ์ƒ๊ฐํ•ด๋ณด์ฃ .
์œ„ ์ฝ”๋“œ ์–ด๋–ค๊ฐ€์š”? ์™ ์ง€ ๋‘ ๋ฒˆ์งธ ์ƒ์„ฑ์ž๊ฐ€ ๋ง˜์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋‚˜์š”? ๋ฐ”๋กœ ์ด๋Ÿฐ ๊ฑธ๋ฆผ์€ ๋ญ”๊ฐ€ ์ˆ ์ˆ  ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”

์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์‚ฌ์†Œํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”๋ด…๋‹ˆ๋‹ค.




์ด๋ ‡๊ฒŒ ๋งŒ๋“ค ๋•Œ ๋‚˜๋ฆ„ โ€œ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ด๋“ค์€ ์œ ์‚ฌํ•œ ๋ชจ์Šต์„ ๊ฐ€์ง€๋„๋ก ํ•œ๋‹ค.โ€๋ผ๋Š” ์›์น™์„ ํ•˜๋‚˜ ๊ฐ€์ง€๊ณ 

๋ชจ์–‘์„ ๋ฐ”๊พธ์–ด ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ„ ์ฐจ์ด ์—†๋Š”๋ฐ, ์ข€ ๋” ๋‚˜์€๊ฐ€์š”? ์—ฌ๊ธฐ๋‹ค๊ฐ€ ๋ญ”๊ฐ€ ๋งŽ์€ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์ด ๋ˆˆ์— ๊ฑฐ์Šฌ

๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ๋งŒ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ๋งŽ์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€์š”.
๋™์ผํ•œ ์ฃผ์„์„ ํ•œ ๊ณณ์œผ๋กœ ๋ชจ์œผ๊ณ , ํƒญ์„ ํ™œ์šฉํ•ด์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋™์ผํ•œ ์ปฌ๋Ÿผ์— ๋ณด์ด๋“ฏ์ด ์กฐ์ •์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ ์ ‘ํ–ˆ๋˜ ์ฝ”๋“œ๋ณด๋‹ค ์ข€ ๋” ์ž˜ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋‚˜์š”? ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํƒญ๊นŒ์ง€ ์“ฐ๋ฉด์„œ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์ด๋Ÿฐ ์งˆ

๋ฌธ์„ ํ•˜์‹ค ๋ถ„๋“ค์ด ๋‹น์—ฐํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ๋‹จ์€ ๋‹น์‹ ์˜ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฝํ˜€์ง€๊ธธ ๋ฐ”๋ผ๋Š”๊ฐ€ ์ˆ˜์ค€์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ 

์ด์•ผ๊ธฐ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


Use Methods to Clean Up Irregularity

์ง€๊ธˆ๋ถ€ํ„ฐ ์ด์•ผ๊ธฐํ•  ๋ถ€๋ถ„์€ ๋ฐฉ๋ฒ•์ ์ธ ๋ฉด์ž…๋‹ˆ๋‹ค. ์ง€์ €๋ถ„ํ•ด ๋ณด์ด๋Š” ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ •๋ฆฌ๋ฅผ ํ• ์ง€์— ๋Œ€ํ•œ ์ด

์•ผ๊ธฐ ์ค‘ ํ•˜๋‚˜๋กœ์„œ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ฝ”๋“œ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ^^




์œ„ ์ฝ”๋“œ๋Š” ExpandFullName์— ๋Œ€ํ•ด์„œ ๊ฒ€์ฆ์„ ํ•˜๋Š” ์ฝ”๋“œ์ด์ง€์š”. ๊ทผ๋ฐ ๋ญ”๊ฐ€๊ฐ€ ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค๊ณ  ์™ ์ง€

๋ฐ˜๋ณต๋˜๋Š” ๋‚ด์šฉ์ด ๋งŽ์ด ๋ณด์ด์‹œ์ฃ . ExpandFullName(database_connection, โ€ฆ) ์ด๋Ÿฐ ํ˜•ํƒœ๊ฐ€ ๋ฐ˜๋ณต์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ

๋ ‡๋‹ค๋ฉด ์ด๋Ÿฐ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ์˜๋ฏธ๋ฅผ ๊ฐ„๋ช…ํ•˜๊ฒŒ ํ•˜๋ฉด์„œ ๋ชจ์Šต๋„ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ

๋‹ค. ์ด ๊ณผ์ •์— ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์ฃ . ์šฐ์„  ์œ„ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธ๋งŒ ์‚ด๋ ค์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.




์ฝ๊ณ  ์ดํ•ดํ•˜๋Š”๋ฐ ํŽธํ•ด์กŒ์ฃ ? ๋ฌผ๋ก  CheckFullName์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๋Š” ์ง€๋Š” ํ˜„์žฌ๋กœ์„œ๋Š”

์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์›๋ž˜ ์ฝ”๋“œ๊ฐ€ ์˜๋„ํ•˜๋Š” ๋ฐ”๋Š” ์œ„์™€ ๊ฐ™์ด ์ •๋ฆฌํ•จ์œผ๋กœ ์ธํ•ด์„œ ๋ช…๋ฃŒํ•ด์ง์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” ํ”ํžˆ refactoring์—์„œ ๋‚˜์˜ค๋Š” ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋„ ํ•˜์ง€์š”. ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ

์ •๋ฆฌ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค. ์„ธ๋ถ€ ๊ตฌํ˜„์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.




์ด๋ ‡๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ, ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋‹จ์ˆœํžˆ ์‹œ๊ฐ์ ์ธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ธฐ๋Šฅ์ ์ธ ๋ฉด ๊ตฌ

์กฐ์ ์ธ ๋ฉด์—์„œ๋„ ์ข‹์€ ์˜ํ–ฅ์„ ์ค€๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ž์œผ๋กœ ๋ณด๋Š” ๋Œ€๋ถ€๋ถ„ ์‚ฌ๋ก€์—์„œ๋„ ๋ณผ ์ˆ˜

์žˆ๋Š” ๊ธ์ •์ ์ธ ์ถ”๊ฐ€์  ํšจ๊ณผ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Use Column Alignment When Helpful

์ง€๊ธˆ ๋ณผ ๋‚ด์šฉ์€ ์•ž์—์„œ ์„œ๋ก ์ ์ธ ๋‚ด์šฉ์œผ๋กœ ์–ธ๊ธ‰์ด ๋œ ๋‚ด์šฉ์ธ๋ฐ, ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฑฐ ์‹ซ์–ดํ•  ๊ฐœ๋ฐœ์ž

์ฐธ ๋งŽ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋ฉ๋‹ˆ๋‹ค๋งŒ, column ์ •๋ ฌ์„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ•˜์ž๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค. ์šฐ์„  ๊ฐ„๋‹จํžˆ ์•ž์„œ ์˜ˆ์ œ์—์„œ

๋ณธ ๋‚ด์šฉ์„ ์ƒ๊ฐํ•ฉ์‹œ๋‹ค.




์™ ์ง€ ์‚ฐ๋งŒํ•˜์ง€ ์•Š๋‚˜์š”? ๋ญ ์ด๊ฒƒ๊นŒ์ง€ ์‚ฐ๋งŒํ•˜๋ƒ๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•˜์‹œ๋Š” ๋ถ„ ๋งŽ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ

์ฝ๋Š” ๋ถ„์ด ์ •๋ง ๋ง˜์— ๋“œ๋Š” ๋ชจ์Šต์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ฆฌ๋ฅผ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




์–ด๋–ค๊ฐ€์š”? ๋” ๋‚ซ์ง€ ์•Š์€๊ฐ€์š”? ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ๋ฌธ์—์„œ ๊ฐ๊ฐ ์–ด๋–ค ์ธ์ž์— ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”์ง€ ํ•œ ๋ถ„์— ํ™• ๋“ค์–ด

์˜ค์‹œ์ฃ ? ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆˆ์— ํ™• ๋“ค์–ด์˜จ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋Š” ๊ทธ๋งŒํผ ์‹ค์ˆ˜๋„ ๋ˆˆ์—

์ž˜ ๋ณด์ธ๋‹ค๋Š” ์ด์•ผ๊ธฐ ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ๋ฅผ ๋ณด๋„๋ก ํ•˜์ง€์š”.
์œ„ ์ฝ”๋“œ ์–ด๋–ค๊ฐ€์š”? ์šฐ๋ฆฌ ํ”ํžˆ ๋ณด๋Š” ์ฝ”๋“œ์ด์ฃ ? ๋ณผ ๋•Œ ๋งˆ๋‹ค ๋“œ๋Š” ์ƒ๊ฐ์ธ๋ฐ ์ฐธ ์ง€์ „๋ถ„ํ•˜์ฃ . ๊ฒŒ๋‹ค๊ฐ€ ์œ„ ์ฝ”๋“œ๋Š”

๋ฒ„๊ทธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฐ ๋ฒ„๊ทธ๋Š” ์š”์ฆ˜ ๊ฐœ๋ฐœ๋„๊ตฌ๊ฐ€ ๋‹ค ์žก์•„์ฃผ์ง€๋งŒ, ์˜ˆ๋กœ์„œ ๋ณธ๋‹ค ์ƒ๊ฐํ•ด ์ฃผ์„ธ์š”. ์œ„ ์ฝ”๋“œ๊ฐ€

๊ฐ€์ง„ ๋ฒ„๊ทธ๊ฐ€ ๋ญ˜๊นŒ์š”? ์ฐพ์œผ์…จ๋‚˜์š”? ์•„์ง ๋ชป ์ฐพ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด์„œ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ์นผ๋Ÿผ์„ ๋งž์ถฐ์ค˜ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




์ด์ œ ๋ณด์ด์‹œ๋‚˜์š”? Phone์— ๋Œ€ํ•œ ์„ ์–ธ๋ถ€์—์„œ request๊ฐ€ r์ด ๋น ์ง„ ์ƒํƒœ๋กœ ์ •์˜๊ฐ€ ๋˜์—ˆ์ฃ ? ์ด๋ ‡๊ฒŒ ๋ชจ์–‘์„ ๋ณด๊ธฐ

์ข‹๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ํ•œ ๋ˆˆ์— ์ฝ”๋“œ๊ฐ€ ๋ณด์ด๊ฒŒ ํ•ด์ฃผ๊ณ , ์ด์— ๋”ฐ๋ฅธ ์ข‹์€ ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ๋‹ค ์ค๋‹ˆ๋‹ค.


์ด ์ •๋„ ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ ํ•  ๊ฑฐ์—์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋ฉด, diff ์ธ์‹ ์ฒ˜๋ฆฌ์—์„œ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์˜ฌ

๋•Œ๊ฐ€ ์žˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ ๋ฒˆ๊ฑฐ๋Ÿฌ์›Œ์š”. ์ด๊ฑฐ ๋งž๋Š” ์ด์•ผ๊ธฐ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, diff ์ธ์‹์ด์•ผ ์กฐ์ •์ด

๊ฐ€๋Šฅํ•˜๊ณ  ์ƒ๊ฐ ์™ธ๋กœ ๋ฒˆ๊ฑฐ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ์˜ˆ๋ป์ง„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋”์šฑ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ํ•ด

๋ณด์‹ค ๊ฒƒ์„ ๊ถŒ์žฅ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•ด๋ณด๊ณ  ์•„๋‹ˆ๋ฉด ์•ˆ ํ•˜๋ฉด ๋˜์‹œ์ž–์•„์š”.


Pick a Meaningful Order, and Use It Consistently

์ดํ•ดํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋Š” ํ๋ฆ„์ด ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ๋ฆ„ ์†์—๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์ˆœ์„œ๋„ ํฌํ•จ๋˜์–ด

์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์šฐ๋ฆฌ๋Š” request.POST.get์— ์˜ํ•ด์„œ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ

๋” ๋“ค์–ด๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




์œ„ ๋ฌธ์žฅ์— ์ด์–ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์žฅ์ด ์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ด…๋‹ˆ๋‹ค.




์ด์•ผ๊ธฐ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ถ€๋ถ„์ด ์–ด๋–ค ๋ถ€๋ถ„์ธ์ง€ ์•„์‹œ๊ฒ ์ฃ ? ๋ฐ”๋กœ ๋‹จ์ˆœํ•˜์ง€๋งŒ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ํ•˜๋‚˜์˜ ๋™์ผํ•œ

๋ชจ์Šต๋“ค์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์œ„์™€ ๊ฐ™์ด ์ž‘์ง€๋งŒ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์–ด ๋‘๋ฉด, ๋ฌด์˜์‹ ์ค‘์— ์ฐพ๋Š”

๋™์ž‘์„ ๋” ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ๋Š”๋ฐ ๊ฑธ๋ฆผ๋Œ์ด ๋ฉ๋‹ˆ๋‹ค. ์ž‘์€ ๋งŒํผ ์ž‘์„ฑ์ž๊ฐ€ ์กฐ๊ธˆ๋งŒ ๋” ์‹ ๊ฒฝ์„

์“ฐ๋ฉด ํ›จ์”ฌ ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Organize Declarations into Blocks

์ง€๊ธˆ ์ด์•ผ๊ธฐ ๋“œ๋ฆด ๋‚ด์šฉ์€ ํ”„๋กœ๊ทธ๋žจ ์งค ๋•Œ๋ถ€ํ„ฐ ์•”๋ฌต์ ์œผ๋กœ ๋งจ๋‚  ๋“ค์—ˆ๋˜ ์ด์•ผ๊ธฐ์ง€๋งŒ, ํ™•์ธ ์ฐจ์›์—์„œ ํ•œ ๋ฒˆ ๋ณด

๊ณ  ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์šฐ์„  ์ฝ”๋“œ๋ฅผ ๋ด…๋‹ˆ๋‹ค.




์œ„ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์‚ฐ๋งŒํ•˜์ฃ ? ์ด๋Š” ์„ ์–ธ ์‹œ์ ์—๋„ ์œ ์‚ฌํ•œ ์†์„ฑ๋“ค๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•˜์ง€ ์•Š์•˜

๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ข€ ๋” ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ์˜๋ฏธ๊ฐ€ ์œ ์‚ฌํ•œ ๊ฒƒ๋“ค์„ ๋ฉ์–ด๋ฆฌ๋กœ ๋งŒ๋“ค์–ด ๋‘”๋‹ค๋Š” ๋А๋‚Œ์œผ๋กœ

์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.




์ฃผ์„๊นŒ์ง€ ํ•ด์„œ ๊ตฌ๋ถ„๋˜๋Š” ์˜์—ญ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋„ฃ์–ด์ฃผ๋‹ˆ ๋ณด๊ธฐ ์ข‹์ฃ ? ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๋‹ค๋ฅผ ๋– ๋‚˜์„œ, ๋ณด๊ธฐ ์ข‹์œผ๋ฉด

๋ณด๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๋”์šฑ ๋“ค๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์„ ์–ธ์„ ์ฒ˜์Œ์— ๋ณธ ์˜ˆ์™€ ๊ฐ™์ด ํ•ด ์ค€ ์ฝ”๋“œ๋ฅผ ๋ณธ๋‹ค๋ฉด, ๋ณด์ž

๋งˆ์ž ๋” ์ด์ƒ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์ ‘ํ•œ๋‹ค๋ฉด, ์™ ์ง€ ๋ณผ๋งŒํ•˜๊ฒ ์ฃ ?

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ธ์‹๋˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋ฉด ๋งค๋ฒˆ ์ด์•ผ๊ธฐ ํ•˜์ง€๋งŒ, ์กฐ๊ทธ๋งŒ ์ฝ๋Š” ์ด๋ฅผ ๋ฐฐ๋ คํ•ด์„œ ์ฝ”๋“œ๋ฅผ

์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
Break Code into โ€œParagraphsโ€

์ด ๋‚ด์šฉ์€ ์•ž์„  ๋‚ด์šฉ๊ณผ ์ค‘๋ณต๋˜๋Š” ๊ฐ์ด ์žˆ๋Š” ๋‚ด์šฉ์ธ๋ฐ, ์„ ์–ธ๋ถ€ ์™ธ์— ์‹ค์ œ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ์— ์žˆ์–ด์„œ๋„ ์˜๋ฏธ ๋‹จ

์œ„๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฌถ์–ด ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”๊ฐ€ ์„ค๋ช… ์—†์ด ๋‚˜์œ ์˜ˆ์™€ ์ข‹์€ ์˜ˆ๋ฅผ ๋ฐ”๋กœ ๋ณด๋„๋ก

ํ•ฉ์‹œ๋‹ค.




์ข€ ์ •๋ฆฌํ•ด์•ผ๊ฒ ์ฃ ! ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




๋‹ค์‹œ ์ด์•ผ๊ธฐ ๋“œ๋ฆฌ์ง€๋งŒ, ๋‚จ์˜ ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ๋ด์˜จ ๊ฒƒ ๊ฐ™์ด

โ€˜๋ญ์•ผ ์ด๊ฑฐ~โ€™ ์•„๋‹ˆ๋ฉด โ€˜์Œ ๊น”๋”ํ•œ๋ฐ.โ€™ ์ด๋ ‡๊ฒŒ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.


Summary

์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๋ชจ์–‘์ƒˆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ์ด์•ผ๊ธฐ ๋“œ๋ฆฐ ๋‚ด์šฉ์€ coding

convention์— ์˜ํ•ด์„œ ๊ธฐ์ˆ ์ด ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ๊นŒ์ง€ ํ•˜๊ธฐ๋Š” ๋„ˆ๋ฌด ์ œ์•ฝ์ ์ด๋ผ ์ด์•ผ๊ธฐ ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋“ค

๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ชจ๋“  ๋‚ด์šฉ์—๋Š” ๋‹ค์Œ ์ƒ๊ฐ์ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.
์œ ์‚ฌํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๊ฒƒ๋“ค์€ ๋ฝ‘์•„์ฃผ๊ณ , ๋ชจ์•„์ค์‹œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์•„๊ฐ€ ์œ ์‚ฌํ•œ ์ฝ”๋“œ๋Š” ์œ ์‚ฌํ•œ ๋ชจ์Šต์„ ์ทจํ•˜๋„๋ก

ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
Chapter 5. Knowing What to Comment

์šฐ๋ฆฌ๋Š” ์ฃผ์„์„ ์ฝ”๋“œ ์ƒ์— ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, โ€œ์™œ ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ• ๊นŒ?โ€์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•œ ๋ฒˆ ํ•ด

๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„ํ˜น ํ•„์š” ์—†๋Š” ์ฃผ์„ ๋˜๋Š” ์ด์ƒํ•œ ์ฃผ์„์€ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๋” ํž˜๋“ค๊ฒŒ ํ•˜๊ธฐ

๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๊ผฌ์˜ฅ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ธ๋ฐ, ํ•ด๋‹น ๋ถ€๋ถ„์€ ์ฃผ์„์€ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ

์ž…๋‹ˆ๋‹ค.

์ฃผ์„์„ ์ž‘์„ฑํ•˜๋Š” ๋ชฉ์ ์€ ์•„๋ฌด๋ž˜๋„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹น์‹œ์— ์ฝ”๋“œ ์ž‘์„ฑ์ž๊ฐ€ ์•„๋Š” ๊ฒƒ๋“ค์„ ์ฝ”๋“œ๋ฅผ ์ฝ

๋Š” ์ด์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์ด๋Š” ๋ณธ์ธ์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฝ”๋“œ

์ž‘์„ฑ์ž๊ฐ€ ์•„๋Š” ๊ฒƒ๋“ค์ด๋ผ๋Š” ๊ฒƒ ์ค‘์—๋Š” ์–ด๋–ค ๊ฒƒ์€ ์ฝ”๋“œ์— ๋ฌป์–ด๋‚  ์ˆ˜๋„ ์žˆ๊ณ , ์–ด๋–ค ๊ฒƒ์€ ์ž์‹ ์€ ๋‹น

์—ฐํ•˜๋‹ค๋ผ๊ณ  ๋А๋ผ๋ฉด์„œ ์ ์–ด์•ผ ํ•  ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด

์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ฌ๋ก€๋ฅผ ๋ณด๋ฉด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


Knowing what not to comment

์ฃผ์„ ์—ญ์‹œ๋„ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋•Œ ์ฝ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ์„์ด ๋“ค์–ด๊ฐ€๋Š” ๋งŒํผ ์ฝ”๋“œ ์ค„ ์ˆ˜๋Š” ๋Š˜์–ด

๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ฃผ์„๋„ ์ •๋ง ํ•„์š”ํ•œ ํ•ญ๋ชฉ๋“ค์ด ์•„๋‹Œ ์ด์ƒ์€ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š”๋ฐ ๋ฐฉํ•ด๋งŒ ๋  ๋ฟ ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ธก๋ฉด์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ด…์‹œ๋‹ค.




์œ„ ์ฝ”๋“œ์— ์žˆ๋Š” ์ฃผ์„์€ ์–ด๋– ํ•ฉ๋‹ˆ๊นŒ? ํ•„์š”ํ• ๊นŒ์š”? ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ์„ ์ž์ฒด๊ฐ€ ์ฝ”๋“œ์—์„œ ์ฃผ์ง€

์•Š๋Š” ์ •๋ณด ์ด์ƒ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ํ•˜๋‚˜ ๊ฐ€์ ธ๋ด…๋‹ˆ๋‹ค.


์ฝ”๋“œ ์ž์ฒด์—์„œ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•ด์„œ๋Š” ์ฃผ์„์„ ๋‹ฌ์ง€ ๋ง™์‹œ๋‹ค.

์—ฌ๊ธฐ์„œ โ€œ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š”โ€ ์‚ฌ์‹ค์€ ์–ด๋–ค ์ •๋„์ผ๊นŒ์š”? ์ด์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ์ƒ๊ฐํ•˜๋Š” ์ธก๋ฉด์—์„œ ์•„๋ž˜

์ฝ”๋“œ๋ฅผ ๋ด…์‹œ๋‹ค.




์œ„ ์ฃผ์„์€ ์–ด๋–ค๊ฐ€์š”? ์œ„ ์ฃผ์„์€ ์ฝ”๋“œ์— ์žˆ๋Š” ๋‚ด์šฉ ์™ธ์— ๋‹ค๋ฅธ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€

๋งŒ, ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฃผ์„์„ ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฉด์—์„œ โ€œ๋ฐ”๋กœ
์•Œ ์ˆ˜ ์žˆ๋Š”โ€์ด๋ผ๋Š” ์ธก๋ฉด์—์„œ ์œ„ ์ฃผ์„์€ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์ฃผ์„์€ ์ฝ”๋“œ ์ž์ฒด์—์„œ ์•Œ ์ˆ˜ ์žˆ

๋Š” ๊ฒƒ์€ ์ž‘์„ฑํ•˜์ง€ ์•Š๋”๋ผ๋„, ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ, ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ์ด์— ๋Œ€ํ•œ ์ง๊ด€์ ์ธ ์„ค๋ช…์€ ํ•„์š”

ํ•œ ์ฃผ์„์ด๋ผ ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์•ž ์„œ ์–ธ๊ธ‰ํ•œ ๋‚ด์šฉ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„์ธ๋ฐ, ์šฐ๋ฆฌ๋Š” ์•„๋ฌด๋Ÿฐ ์ƒ๊ฐ ์—†์ด ๋˜๋Š” ๊ต์œก์„ ์ฃผ์„์„ ๋ฌด์กฐ๊ฑด ์ž‘

์„ฑํ•˜๋„๋ก ๊ธธ๋“ค์—ฌ์ ธ ์žˆ์–ด์„œ, ๊ทธ ํ๋‹จ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ๋‹ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.




์ด๊ฑฐ์•ผ ๋ง๋กœ ์ •๋ง ์˜๋ฏธ ์—†๋Š” ์ฃผ์„์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ํ’€์–ด์„œ ์ฃผ์„์„ ๋‹ฌ์•˜์„ ๋ฟ์ธ ๊ฒƒ

์ด์ฃ . ์ด๋Ÿฌํ•œ ์ฃผ์„์€ ์ž๋™ํ™”๋œ ์ฃผ์„์œผ๋กœ ๋งŽ์ด ์ƒ์„ฑ๋˜๊ณ ๋Š” ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ์ˆ˜ ๋งŽ์€ getter/setter์— ๋Œ€

ํ•œ ์˜๋ฏธ ์—†๋Š” ์ฃผ์„๋“ค์ด ๊ฐ€๋“ํ•˜์ง€์š”. ์ด๋Ÿฐ ์ฃผ์„์— ๋Œ€ํ•ด์„œ ํ•ญ์ƒ ์œ ์˜๋ฏธํ•œ๊ฐ€๋ฅผ ์ƒ๊ฐํ•ด์„œ ํ•„์š”๊ฐ€ ์—†

๋‹ค๋ฉด, ์ œ๊ฑฐ๋ฅผ ํ•˜๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ง ํ•„์š”ํ•˜๊ฒŒ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋„๋ก ์ฃผ์„์„

๋‹ฌ๋„๋ก ํ•ฉ์‹œ๋‹ค.




์•ž์„œ ๋ณธ ์ฃผ์„๊ณผ ์œ„ ์ฃผ์„์€ ๋‹ค๋ฅด์ฃ . ๋ฐ”๋กœ ์ฝ”๋“œ ์ž์ฒด์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ์•„๋‹Œ ์ถ”๊ฐ€์ ์ธ ์ค‘์š”

ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด๋Ÿฐ ์ฃผ์„์ด ํ•„์š”ํ•œ ๊ฒƒ์ด์ฃ .


์ฃผ์„๋“ค ์ค‘์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ฃผ์„๋„ ์žˆ์Šต๋‹ˆ๋‹ค.




์–ด๋–ค๊ฐ€์š”? ๋ญ”๊ฐ€ ๊ฐœ์„ ํ•  ๋ถ€๋ถ„์ด ์žˆ์–ด ๋ณด์ด๋‚˜์š”? ๋ฉ‹์ง„ ์ฃผ์„์ธ๊ฐ€์š”? ํ”ํžˆ ์ข‹์€ ์ฝ”๋“œ๋Š” ์ฃผ์„ ์—†์ด๋„

์ฝ”๋“œ ์ž์ฒด๋กœ ์ •ํ™•ํžˆ ์˜๋ฏธ ์ „๋‹ฌ์ด ๋˜๋Š” ์ฝ”๋“œ๋ผ๊ณ  ํ•˜์ง€์š”. ๊ทธ๋Ÿฐ ์ธก๋ฉด์—์„œ ๋ณด๋ฉด ์œ„ ์ฝ”๋“œ๋Š” ์–ด๋– ํ•ฉ๋‹ˆ

๊นŒ? ์ด ์ฝ”๋“œ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊พธ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




๋ญ๊ฐ€ ๋‹ฌ๋ผ์กŒ๋‚˜์š”? ํ•จ์ˆ˜ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ์ž˜ ๋ชป ๋˜์–ด์„œ, ์šฐ๋ฆฌ๋Š” ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋งˆ๊ตฌ๋งˆ๊ตฌ ์ฃผ์„์œผ๋กœ

๊ฐ๋‹นํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์œ„์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ •ํ™•ํžˆ ๊ณ ์นจ์œผ๋กœ ์ธํ•ด์„œ, ํ•„์š” ์—†๋Š” ์ฃผ์„๋“ค์„

์ง€์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” ์ฃผ์„๊นŒ์ง€ ํฌํ•จํ•ด์„œ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰ ๋ณธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“ 
์œ„์น˜๋“ค์„ ์ฐพ์•„๊ฐ€๋ฉด์„œ, ์ฃผ์„์„ ๋‹ฌ์•„์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉด ์œ„์™€ ๊ฐ™์ด ๋ชจํ˜ธํ•œ ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ๋Š” ์ฃผ์„์ด

์•„๋‹Œ ์ด๋ฆ„ ์ž์ฒด๋ฅผ ๊ณ ์น˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ํ–‰๋™์ด ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ

์ž˜๋ชป๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธธ์ž…๋‹ˆ๋‹ค. ์‚ฌ๊ณ ๊ฐ€ ํ„ฐ์ง„ ๋’ค์— โ€œ์ด๋Ÿฐ ํ•จ์ˆ˜์ธ์ง€ ๋ชฐ๋ž์–ด์š”.โ€๋ผ๊ณ  ํ•˜๋Š”

๋™๋ฃŒ์—๊ฒŒ โ€œ์ฃผ์„์— ๋‹ค ์จ ๋‘์—ˆ๋Š”๋ฐ, ์™œ ์•ˆ ๋ดค์–ด!โ€๋ผ๊ณ  ํ™”๋ฅผ ๋‚ด๋Š” ๊ฒƒ์ด์•ผ ๋ง๋กœ ์ •๋ง ์ˆ˜์ค€ ๋‚ฎ์€ ํ”„๋กœ

๊ทธ๋ž˜๋จธ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ๋ชจํ˜ธํ•œ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฆ„ ์ž์ฒด๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ

์ˆ˜์ •์„ ํ•˜๋„๋ก ํ•ด์•ผ์ง€, ์ฃผ์„์œผ๋กœ ๊ฐ๋‹นํ•˜๋ ค ํ•˜์ง€ ๋ง๋„๋ก ํ•ฉ์‹œ๋‹ค.

์ฆ‰. Self-documentingํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ฃผ์„๋ณด๋‹ค ์šฐ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ข‹์€ ์ด๋ฆ„์€ ์ข‹์€ ์ฃผ์„๋ณด๋‹ค

์šฐ์„ ํ•จ์„ ๋ช…์‹ฌํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค. ์ด๋Ÿฐ ์ธก๋ฉด์—์„œ ์•„๋ž˜ ์ฝ”๋“œ ํ•œ ๋ฒˆ ๋ด…์‹œ๋‹ค.




์œ„ ์ฝ”๋“œ ์ž์ฒด๋Š” ๊ต‰์žฅํžˆ ์œ„ํ—˜ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ง€์šด๋‹ค๋‹ˆ. ๊ทธ๋Ÿฐ๋ฐ ์ž์„ธํžˆ ๋ณด๋ฉด ์ฃผ์„์œผ๋กœ

์‹ค์ œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ์ง€์šฐ์ง€ ์•Š๊ณ  ํ‚ค์— ๋Œ€ํ•œ handle๋งŒ ํ’€์–ด์ค€๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ์ฃผ์„์ธ๊ฐ€์š”? ์œ„ ์ฝ”

๋“œ๋Š” ์ฐจ๋ผ๋ฆฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ณ ์น˜๋Š” ๊ฒƒ์ด ์–ด๋–จ๊นŒ์š”?




์–ด๋–ค๊ฐ€์š”? ์ฃผ์„ ํ•˜๋‚˜๋„ ์—†์ด ์›ํ•˜๋Š” ๋ฐ”๊ฐ€ ์ž˜ ์ „๋‹ฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ self-documentingํ•˜

๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


Recording your thoughts

์ง€๊ธˆ๊นŒ์ง€ ์ฃผ์„์„ ๋‹ฌ์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ๋ฐ˜๋“œ์‹œ ์ฃผ์„์œผ๋กœ ๊ธฐ์ˆ ๋˜์–ด์•ผ

ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ข‹์€ ์ฃผ์„๋“ค์„ ์ž์„ธํžˆ ๋ณด๋ฉด, ์ฝ”๋“œ ์ž‘์„ฑํ•  ๋‹น์‹œ์— ์ฝ”๋“œ ์ž‘์„ฑ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ฃผ

์„์ž…๋‹ˆ๋‹ค. ์ด๋ฅธ๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ƒ๊ฐ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์„๋“ค์ธ ๊ฒƒ์ด์ฃ . ์ด๋Ÿฌํ•œ ์ƒ๊ฐ์€ ๋งˆ์น˜ ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€

ํ•œ insight๋‚˜ ์ˆจ์€ ์ด์•ผ๊ธฐ๋“ค์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจํ˜ธํ•˜๊ตฐ์š”. ๊ตฌ์ฒด์ ์œผ๋กœ ์•„๋ž˜ ์˜ˆ๋ฅผ ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.




์œ„ ์ฃผ์„์€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ์ด๊ฐ€ ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ insight๋‚˜ ๋ฐฐ๊ฒฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ ์ฝ”๋“œ๋ฅผ

์ฝ๋Š” ์ด๋“ค์ด ์ถ”๊ฐ€์ ์ธ ๊ณ ์ƒ์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•จ๊ณผ ๋™์‹œ์— ์™œ ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‚˜๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋‚ด์šฉ์ด ๋ฐ”๋กœ ์ฝ”๋“œ์— ๋Œ€ํ•œ insight ๋˜๋Š” ๋ฐฐ๊ฒฝ ์ง€์‹์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋ฅผ ๋ด…์‹œ๋‹ค.




์œ„ ์ฃผ์„์€ ์–ด๋– ํ•œ๊ฐ€์š”? ๋งŒ์•ฝ ์œ„ ์ฃผ์„์ด ์—†๋‹ค๋ฉด, ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์‚ฌ๋žŒ์€ ๋ช‡๋ช‡ ๋‹จ์–ด๊ฐ€ ๋†“์ณ์ง€๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ

ํ•˜๊ณ  ๋ฒ„๊ทธ๋ผ ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋Š” ๋ณธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ–ˆ๋˜ ์ด๊ฐ€ ๊ณ ์ƒํ•ด์„œ ๋‚ด๋ฆฐ 100%๋Š” ํž˜๋“ค๋‹ค๋Š” ์‚ฌ
์‹ค์„ ๋‹ค์‹œ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๊ฒ ์ฃ . ์–ด๋งˆ์–ด๋งˆํ•œ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•ด์„œ. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์™€ ๊ฐ™์ด ์ฃผ์„์„ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ ์ธํ•ด์„œ, ํ•ด

๋‹น ์ฝ”๋“œ์— ๋‹ด๊ธด ์ƒ๊ฐ์„ ์ „๋‹ฌ์ด ๋˜๊ณ , ์ด๋กœ ์ธํ•ด์„œ ๋น„ํšจ์œจ์ ์ธ ๋™์ผ ์ž‘์—… ๋ฐ˜๋ณต์„ ๋ง‰์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌ

ํ•œ ์ข‹์€ ์ฃผ์„(๋‹ด์„ ๊ฒƒ์„ ๋‹ด์€ ์ฃผ์„)์˜ ๋‹ค๋ฅธ ์˜ˆ๋ฅผ ๋ด…์‹œ๋‹ค.




์œ„ ์ฃผ์„์€ ๋งˆ์น˜ ์œ ์„œ์™€ ๊ฐ™์ง€์š”. ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„๊ณผ ์ด์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๊ฐ€์ด๋“œ๊นŒ์ง€ ์ฃผ๊ณ  ์žˆ

์Šต๋‹ˆ๋‹ค. ์ฆ‰ ํ›„์ž„์ž์—๊ฒŒ ์ฝ”๋“œ๋กœ ๋ชป ๋‹คํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์„์ด ์žˆ์Œ์œผ๋กœ ์ธํ•ด์„œ

์ฝ”๋“œ๋ฅผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด๋Š” ์šฉ๊ฐํ•˜๊ฒŒ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€์š”. ์ด๋Ÿฌํ•œ ์ธก๋ฉด์œผ๋กœ์„œ ํ›„์† ์ž‘์—…์„ ์œ„

ํ•œ ์ฃผ์„๋“ค์„ ์ž ์‹œ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




์œ„ ์ฃผ์„๋“ค์€ ์ž์‹ ์ด ๋ชป ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด์ฃผ๋ฉด์„œ, ๊ณ ์ณ์•ผ ํ•  ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ

๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฃผ์„์„ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ๋ถ€๋„๋Ÿฌ์›Œ ํ•˜์ง€ ๋ง๊ณ  ๊ณผ๊ฐํžˆ ์ ์œผ์„ธ์š”. ์ด๊ฒƒ์€ ์ ˆ๋Œ€ ์ฐฝํ”ผํ•œ

ํ–‰๋™์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ ์ตœ์„ ์„ ๋‹คํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด์ž–์•„์š”. ๊ทธ๋Ÿฐ๋ฐ, ์ฃผ์–ด์ง„ ์ƒํ™ฉ์€ ํ•ญ์ƒ

์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ฏธ์ง„ํ•œ ๋ถ€๋ถ„์ด ๋‹น์—ฐํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์„ ์ด๋ฅผ ๊ฐ์ถ”์ง€ ์•„๋‹ˆํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ

๊ทธ๋ž˜๋จธ ํ˜น์€ ์‹œ๊ฐ„์ด ์ง€๋‚œ ๋’ค ์ž์‹ ์—๊ฒŒ ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๊ฐ€์ด๋“œ๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ฃผ์„ ๋งŽ์ด

๋งŽ์ด ๋‹ฌ์•„๋‘˜์ˆ˜๋ก ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒฌ๊ณ ํ•ด์ ธ ๊ฐ€๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.


์ด์ฒ˜๋Ÿผ ์ฝ”๋“œ ์ž‘์„ฑ์ž์˜ ์ƒ๊ฐ์„ ๋‹ด๋Š” ํ–‰๋™ ์ค‘์—์„œ ์•„์˜ˆ ๋”ฐ๋กœ ๋ถ„๋ฅ˜๋˜์–ด์„œ ์ด์•ผ๊ธฐ ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ƒ์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์„์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ๋ฅผ ๋ด…์‹œ๋‹ค. ํ”ํžˆ ์“ฐ์ด๋Š” ์ƒ์ˆ˜์ด์ฃ .




์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์–ด๋–ค ์ƒ๊ฐ์ด ๋“œ๋‚˜์š”? ๋งŒ์•ฝ ํ•ด๋‹น ์ฝ”๋“œ ๊ฐ’์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ๋˜๋ฉด, ์–ด๋–ค ์ƒ๊ฐ์ด ๋จธ

๋ฆฌ ์†์— ๋“ค๊นŒ์š”? ๋ฐ”๋กœ ์™œ 8์ผ๊นŒ ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ƒ์ˆ˜๋“ค์€ ์žฌ๋ฏธ๋‚˜๊ฒŒ๋„ ๊ฐ์ž ๊ฐ’์ด ์ •ํ•ด์ง„ ๋ฐฐ๊ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋“ค

์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์–ด๋–จ์ง€ ๋ด๋ด…์‹œ๋‹ค.




์œ„์™€ ๊ฐ™์ด ์ฃผ์„์ด ๋˜์–ด ์žˆ์œผ๋ฉด, NUM_THREADS๋ผ๋Š” ์ƒ์ˆ˜ ๊ฐ’์„ ์กฐ์ •ํ•  ๋•Œ, ์–ด๋–ป๊ฒŒ ๋‚˜์˜จ ๊ฐ’์„ ์•Œ๊ฒŒ ๋˜๋‹ˆ, ๋ถˆ

์•ˆ๊ฐ ๋˜๋Š” ๊ณ ๋ฏผ ์—†์ด ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€์š”. ์ด๋Ÿฌํ•œ ์˜ˆ์— ๋Œ€ํ•ด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ๋” ๋ด…์‹œ๋‹ค.




์œ„ ์˜ˆ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, ์œ„์™€ ๊ฐ™์€ ์ฃผ์„์ด ๋‹ฌ์•„์ง์œผ๋กœ ์ธํ•ด์„œ ํ›„์†์ž๋“ค์€ ์—„์ฒญ๋‚œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝ์„ ํ•  ์ˆ˜ ์žˆ์Šต
๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€์„œ๋Š” ์ž˜ ๋ชป ๋œ ๊ฐ’์œผ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•จ์œผ๋กœ ์ธํ•ด์„œ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๋Š” ์žฅ์• ๋„ ๋ฐฉ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ชจ๋“  ์ƒ์ˆ˜๊ฐ€ ์ฃผ์„ ์ฒ˜๋ฆฌ๋  ํ•„์š”๊ฐ€ ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ SECONDS_PER_DAY ๋ผ๋Š” ์ƒ์ˆ˜๊ฐ€ ์žˆ

๋‹ค๋ฉด, ์ด ๊ฐ’์— ๋Œ€ํ•ด์„œ ์ฃผ์„์„ ๋‹ค๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์ „ํ˜€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์ค‘์š”ํ•œ ๊ฒƒ์€ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•  ์ด์•ผ๊ธฐ๋“ค์„ ์ฃผ์„์œผ๋กœ ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” ์“ฐ์ง€ ๋งˆ์„ธ์š”. ^^


Put Yourself in the Readerโ€™s Shoes

์ฃผ์„์„ ์ž‘์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ ์ž์„ธ๋Š” ๋ฐ”๋กœ, ํ•ด๋‹น ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ฒ˜์Œ ์ ‘ํ•  ์‚ฌ๋žŒ๋“ค์ด ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ๋ญ”๊ฐ€๋ฅผ

์ƒ๊ฐํ•˜๊ฒŒ ๋  ๋ถ€๋ถ„์„ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ํ•ด๋‹น ๋ถ€๋ถ„๋“ค์ด ์ฃผ์„์ด ํ•„์š”ํ•œ ๊ณณ๋“ค ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์˜ˆ๋ฅผ ๋ณด๋ฉด์„œ ์ƒ๊ฐ

ํ•ด ๋ด…์‹œ๋‹ค.




์œ„ ์ฝ”๋“œ์—์„œ ๋ณผ๋“œ ์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์„ ๋ณด๋ฉด ์˜๋ฌธ์ด ๋“ค์ง€ ์•Š๋‚˜์š”? ์™œ clear์ธ๋ฐ swap์„ ํ• ๊นŒ? ์ด๋Ÿฐ ์˜๋ฌธ์ด ๋“œ๋Š”

๋ฐ”๋กœ ๊ทธ ๋ถ€๋ถ„์ด ์ฃผ์„์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋ฐ”๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ํ•ด ๋‘๋ฉด ์ฝ”๋“œ ์ฝ๋Š” ์ด๋Š” ๋ฐ”

๋กœ ์ฃผ์„์„ ๋ณด๋ฉด์„œ, ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์˜๋ฌธ ์—†์ด ์ฝ”๋“œ๋ฅผ ์ฝ๊ฒŒ ๋˜๊ฒ ์ง€์š”.




์ด๋ ‡๊ฒŒ ์–ด๋–ค ์˜๋ฌธ์ด ๋“ค๋งŒํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ฃผ์„์„ ๋‹ฌ์•˜๋‹ค ํ•˜๋ฉด, ์ด๋ฒˆ์—๋Š” ๋ญ”๊ฐ€ ์ผ์ƒ์ ์ด์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋Œ€

ํ•ด์„œ ์ƒ๊ฐ์„ ํ•ด๋ด…์‹œ๋‹ค. ์ด์•ผ๊ธฐ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ญ”๊ฐ€ ์ž˜ ๋ชป ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ฃผ์„์„ ํ•˜๋Š” ๊ฒƒ์ด
์ง€์š”. ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ์˜ˆ๋กœ ์ƒ๊ฐํ•ฉ์‹œ๋‹ค.




์œ„ ํ•จ์ˆ˜๋งŒ ๋”ฑ ๋ด์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์ƒ๊ฐ ์—†์ด ์ด๋ฉ”์ผ ๋ณด๋‚ด๋Š”๋ฐ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์“ฐ๊ฒ ์ง€์š”. ๊ทผ๋ฐ ๋งŒ์•ฝ ์ผ๋ฐ˜์ ์€ ์ด๋ฉ”์ผ

๋ณด๋‚ด๋Š” ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์œ„ ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€ ์ด๋ฉ”์ผ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์™ธ๋ถ€ ์ด๋ฉ”์ผ ์„œ๋ฒ„์™€ ์—ฐ๊ณ„๊ฐ€ ๋˜์–ด์„œ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ

๋ฉ”์ผ ๋ณด๋‚ด๋Š”๋ฐ, ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ๋˜๋Š” ๊ทธ ์ด์ƒ์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ 1๋ถ„ ์ง€๋‚˜

๋ฉด timeout ์ฒ˜๋ฆฌ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ๋ฐ˜๋“œ์‹œ ์ฃผ์„์„ ์จ ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์ฃผ์„์ด ์—†๋‹ค๋ฉด, ํ•ด๋‹น ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ๋‹ค๋Ÿ‰ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ, ์ง€์—ฐ์ด ๋œ๋‹ค๋ฉด ์น˜๋ช…์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ . ์ด

๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด์ƒ์ ์œผ๋กœ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์— ๊ทธ ๋‚ด์šฉ์„ ํฌํ•จ์‹œํ‚ค๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ, ๊ทธ๊ฑด ํ•จ์ˆ˜ ์ด๋ฆ„์— ํฌํ•จ์‹œํ‚ค

๊ธฐ๋Š” ๋ถ€์ˆ˜์ ์ธ ๋‚ด์šฉ์ด๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ๋‹ฌ์•„๋ด…์‹œ๋‹ค.




์ด๋ ‡๊ฒŒ ์ฃผ์„์ด ๋‹ฌ์•„์ ธ ์žˆ์œผ๋ฉด, ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์‚ฌ๋žŒ์€ ์ฃผ์˜ํ•ด์„œ ํ˜น์‹œ๋‚˜ ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜ ์ƒํ™ฉ์„ ๋Œ€์ฒ˜ํ•˜
๊ฑฐ๋‚˜ ์œ„ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ฒ ์ง€์š”. ์ด๋Ÿฌํ•œ ์ด์ƒ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ฃผ์„์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ๋‹ฌ์•„๋‘๋Š”

๊ฒƒ๋„ ์ข‹์€ ์ฃผ์„์ด๋ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.




์ง€๊ธˆ๊นŒ์ง€๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์ธก๋ฉด์—์„œ ์ฃผ์„์— ๋Œ€ํ•ด์„œ, ๋งŽ์ด ์ƒ๊ฐํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•  ๋•Œ์—๋Š”

์ „์ฒด์ ์ธ ๊ทธ๋ฆผ ์ด๋ฅธ๋ฐ” big picture์— ๋Œ€ํ•œ ๋ฌ˜์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๋‚ด์šฉ์ด ๊ทธ๋Ÿฐ ๋‚ด์šฉ์ผ์ง€์—

๋Œ€ํ•ด์„œ๋Š” ํ˜„์žฌ๊นŒ์ง€ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์‹ ๊ทœ ์‚ฌ์›์—๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ํ•  ๋•Œ, ์ „๋‹ฌํ•˜๋Š” ๋‚ด์šฉ๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ

๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ โ€œ์ด ํด๋ž˜์Šค๋Š” ์–ด๋–ค ํด๋ž˜์Šค์™€ ๊ฐ™์ด ๋™์ž‘์„ ํ•˜๊ณ , ์ด ์ฝ”๋“œ๋“ค์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฅผ ์—ฐ๊ณ„ํ•˜๋Š” ์ฝ”๋“œ๋กœ์„œ ์ ˆ๋Œ€ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ง์ ‘์ ์œผ๋กœ ๋ณธ ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด ์•ˆ๋˜๊ณ โ€ฆโ€ ์ด๋Ÿฌํ•œ ์ด์•ผ๊ธฐ๋“ค์ด ๋ฐ”

๋กœ big picture์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ ์ด๋ฉฐ, ์šฐ๋ฆฌ๋Š” ์ด ๋‚ด์šฉ์„ ๋ฐ˜๋“œ์‹œ ์ฃผ์„์œผ๋กœ ์ฝ”๋“œ์— ์ ์–ด๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ

์˜ˆ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฃผ์„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•  ๋•Œ, ๋„ˆ๋ฌด ์ž˜ ์“ฐ๋ ค๊ณ  ๋ถ€๋‹ด์€ ๊ฐ€์ง€์ง€ ๋งˆ์„ธ์š”. ํฐ ๊ทธ๋ฆผ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•ด์ฃผ๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€

ํ›จ์”ฌ ์ค‘์š”ํ•˜๋‹ˆ๊น์š”.


๊ทธ๋ฆฌ๊ณ  ์ด๊ฒŒ ํด๋ž˜์Šค๋‚˜ ํŒŒ์ผ ๋‹จ์œ„์— ๋Œ€ํ•ด์„œ ๊ตญํ•œ๋œ ์ด์•ผ๊ธฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํฐ ๊ทธ๋ฆผ์— ๋Œ€ํ•ด์„œ, ์ด์•ผ๊ธฐ๊ฐ€ ํ•„์š”ํ•œ

๊ฒฝ์šฐ์—๋Š” ์–ธ์ œ๋‚˜ ๊ฐ€๋ณ๊ฒŒ ํฐ ๊ทธ๋ฆผ์„ ์„ค๋ช…ํ•ด์„œ ์•„๋ž˜ ๋‚ด์šฉ ์ดํ•ด๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์ฃผ์ž๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ

๋กœ ์•„๋ž˜ ์ฝ”๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




๋ฃจํ”„ ๋‚ด๋ถ€ ๋‚ด์šฉ์„ ๋‹ค ๋ณด๋ฉด ์•Œ๊ฒ ์ง€์š”. ๊ทธ๋ ‡์ง€๋งŒ, ์œ„์— ๋–กํ•˜๋‹ˆ ํฐ ๊ทธ๋ฆผ์— ๋Œ€ํ•ด์„œ ์ฃผ์„์„ ๋‹ฌ์•„์ฃผ๋‹ˆ ์„ธ๋ถ€์ ์ธ ์ฝ”

๋“œ ๋‚ด์šฉ์„ ๋ณด์ง€ ์•Š๊ณ ๋„ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์ฐธ ์ข‹๊ฒ ์ง€์š”. ์ด๋Ÿฐ๊ฒŒ ๋ฐ”๋กœ ํฐ ๊ทธ๋ฆผ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฃผ์„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์œ ์‚ฌํ•œ

์ฃผ์„์œผ๋กœ๋Š” ์ „์ฒด์ ์ธ ๋…ผ๋ฆฌ ๋ฌถ์Œ์— ๋Œ€ํ•œ ์ฃผ์„์ž…๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ•˜๋‚˜์ด์ง€๋งŒ,
๊ทธ๋ ‡์ง€ ๋ชป ํ•œ ๊ฒฝ์šฐ์—๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ์จ์ฃผ๋ฉด ์ฝ๋Š” ์ด๋Š” ์ฝ๊ธฐ ํŽธํ•˜๊ฒ ์ง€์š”. ์ด๊ฒŒ ๋ฐ”๋กœ ์ข‹์€ ์ฃผ์„์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ ์ฃผ์„์„ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌด์—‡๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ฝ”๋“œ ์ฃผ์„ ์“ฐ๋Š” ๊ฒƒ

์„ ๋‘๋ ค์›Œํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ์˜๊ฒŒ ์ฃผ์„์„ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ, ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ƒ๊ฐํ•œ ๋‚ด์šฉ์„ ์ฝ”

๋“œ์™€ ํ•จ๊ป˜ ์ ์–ด๋‘”๋‹ค๋Š” ๋งˆ์Œ์œผ๋กœ ์šฐ์„  ์ ์œผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ๋งˆ๋ฌด๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ๊ณผํ•œ์ง€ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ์ง€๋ฅผ ํ™•์ธํ•˜

๊ณ  ์ ์ ˆํžˆ ์ง€์šฐ๊ฑฐ๋‚˜ ๊ณ ์น˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์„ ์ž์ฒด์— ๋Œ€ํ•œ ๋ถ€๋‹ด๊ฐ์œผ๋กœ ์ฃผ์„์„ ๋‘๋ ค์›Œํ•˜์ง€๋Š” ๋ง์•„์•ผ ํ•จ์„ ๋‹ค์‹œ

์ด์•ผ๊ธฐ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์ž…์žฅ์—์„œ ์ฝ์œผ๋ฉด์„œ, ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค๋„๋ก ๋‹ค๋“ฌ๋Š” ๋งˆ์Œ์ด

์ œ์ผ ์ค‘์š”ํ•˜์ฃ  ^^


Summary

์ฃผ์„์„ ์“ฐ๋Š” ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋ฉด์„œ, ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ธ๋ฐ, ์ฝ”๋“œ๋กœ ํ‘œํ˜„๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์„ ์ ์–ด์„œ ์ฝ”๋“œ

๋ฅผ ์ฝ๋Š” ์ด์—๊ฒŒ ์ „๋‹ฌ๋  ๋‚ด์šฉ์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ๋ฅผ

์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


   ๏ฌ   ์ฃผ์„ ๋‹ฌ์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ


       ๏ฎ   ์ฝ”๋“œ ์ž์ฒด์—์„œ ๋ฐ”๋กœ ์ฝํžˆ๋Š” ๋‚ด์šฉ ๋‚˜์—ด


       ๏ฎ   ์ž˜๋ชป๋œ ์ฝ”๋“œ ์ด๋ฆ„์„ ๋ณด์ถฉํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์„. ์ฃผ์„ ๋Œ€์‹  ์ด๋ฆ„์„ ์ˆ˜์ •


   ๏ฌ   ์ฃผ์„์œผ๋กœ ํ‘œ์ถœ๋˜์–ด์•ผ ํ•  ๊ฒƒ


       ๏ฎ   ์ฝ”๋“œ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑ์ด ๋˜๊ฒŒ ๋œ insight๋‚˜ ๋ฐฐ๊ฒฝ


       ๏ฎ   ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ˆ˜์ •๋˜์–ด์•ผ ํ•  ๋ถ€๋ถ„์ด๋‚˜ ํ–ฅํ›„ ์ง„ํ–‰๋  ๋ถ€๋ถ„


       ๏ฎ   ์ƒ์ˆ˜๋“ค์€ ํ•ด๋‹น ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ


   ๏ฌ   ์ฝ๋Š” ์ด ์ž…์žฅ์—์„œ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ฃผ์„


       ๏ฎ   ์ฝ”๋“œ ์ฝ์„ ๋•Œ, ๋ญ”๊ฐ€ ์ƒ๊ฐํ•˜๊ฒŒ ๋  ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์„ค๋ช…


       ๏ฎ   ์ผ์ƒ์ ์ด์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฃผ์ง€๋ฅผ ์œ„ํ•œ ๋‚ด์šฉ


       ๏ฎ   ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์„ ์•Œ๋ ค์ฃผ์–ด ์ดํ•ด๋ฅผ ํŽธํ•˜๊ฒŒ ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ


       ๏ฎ   ์„ธ๋ถ€ ๋‚ด์šฉ์„ ์•„์šฐ๋ฅด๋Š” ๊ธฐ๋Šฅ ๋ฌถ์Œ์— ๋Œ€ํ•œ ์š”์•ฝ ์ฃผ์„


์ด๋Ÿฌํ•œ ์ฃผ์„์— ์„ ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ์›์น™์€ good code > bad code + good comments. ์ž…๋‹ˆ๋‹ค.Good code๋ฅผ ์ž‘์„ฑํ•˜๊ณ 

์ฝ”๋“œ์—๋Š” ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ์ค‘์š”ํ•œ ์ด์•ผ๊ธฐ๋“ค ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋‚ด์šฉ์„ ์ฃผ์„์œผ๋กœ ๋ณด๊ฐ•ํ•ด์„œ ์ฝ

๊ธฐ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.
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์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.


    ๏ฌ    ๋ถˆํ™•์‹คํ•œ ๋ถ€๋ถ„์€ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•˜์ž.
๏ฎ   ๋‚˜์œ ์˜ˆ: ์ด ํŒŒ์ผ์— ๋‹ด๊ธด ์ค„ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


      ๏ฎ   ์ข‹์€ ์˜ˆ: ํŒŒ์ผ ์•ˆ์— ์ƒˆ ์ค„์„ ๋‚˜ํƒ€๋‚ด๋Š” 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);


  ๏ฌ   ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•„๋Š” ๊ฒฝ์šฐ์—๋Š” ๋„๋ฉ”์ธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.


      ๏ฎ   ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์บ์‹œ๋ผ๋Š” ๊ฐœ๋…์„ ๋Œ€๋ถ€๋ถ„์ด ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

          ๊ทธ๋ ‡๋‹ค๋ฉด, ๋งŒ์•ฝ ์บ์‰ฌ์— ๋Œ€ํ•ด์„œ ํ’€์–ด์„œ ๊ธธ๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์บ์‰ฌ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค๊ณ 

          ๋ผ๊ณ  ์งง๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


      ๏ฎ   ์บ์‰ฌ๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ^^;;


          ๏ต    ์ด ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™์ผํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด๋Š” ์†๋„๋ฅผ ํ–ฅ

               ์ƒ์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๋‚˜์ค‘์— ์ด ํด๋ž˜์Šค๊ฐ€ ์ฝํžˆ๋ฉด, ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์„ ๊ฐ€์กŒ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜

               ๊ณ , ๋งŒ์•ฝ ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ฐ’์ด ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ’์ด ์ฝํ˜€์ ธ์„œ

               ์ „๋‹ฌํ•˜๋Š” ๋™์‹œ์—, ๋‚˜์ค‘์— ์ด์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉค๋ฒ„์— ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
๏ฎ   ์ด๋ ‡๊ฒŒ ์“ฐ๊ธฐ ๋ณด๋‹ค๋Š” โ€œ์ด ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์บ์‹œ ๊ณ„์ธต์œผ๋กœ ๊ธฐ๋Šฅํ•œ๋‹ค.โ€๋ผ๊ณ  ๋ช…๋ฃŒํ•˜

          ๊ณ  ์งง๊ฒŒ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


  ๏ฌ   ์˜ˆ์ œ๋ฅผ ์ ๊ทน ํ™œ์šฉํ•ฉ์‹œ๋‹ค.


      ๏ฎ   ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ๋™์ž‘์„ ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ์„ค๋ช…์„ ํ•˜๊ธฐ ๋ณด๋‹ค๋Š”, ์ ์ ˆํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด์„œ ์„ค๋ช…์„ ํ•ด์ฃผ๋Š”

          ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์˜ˆ๋Š” ๊ณ ๋ฏผ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ ๋ณ„ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ

          ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


      ๏ฎ   ์„ ๋ณ„ํ•˜๋Š” ๊ธฐ์ค€์€ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์• ๋งคํ•˜๊ฒŒ ๋А๋‚„ ๋ถ€๋ถ„๋“ค ๋“ค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค

          ์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


          ๏ต   โ€œunhappyโ€.substring(2) = โ€œhappyโ€

              โ€œunhappyโ€.substring(7) = โ€œโ€


์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํžˆ ๊ฐ€์ด๋“œ๋ฅผ ๋“œ๋ ธ์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ช‡๊ฐ€์ง€ ํŒ์— ๋‹ด๊ธด ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋งˆ์Œ. ์ฝ๋Š” ์ด๊ฐ€ ํŽธํ•˜๊ฒŒ ์ฝ์„ ์ˆ˜

์žˆ๋„๋ก ์ฃผ์„์„ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์งง๊ณ ๋„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๋งˆ์Œ์„ ํ•ญ์ƒ ๊ฐ€์ง€๊ณ  ์ฃผ์„์„ ์“ฐ๋„๋ก ํ•ฉ์‹œ๋‹ค.

The art of readable code _ Part I

  • 1.
    The Art ofReadable 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. CodeShould 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.
    ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "Soeven 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-LevelImprovements ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์ด๋ฆ„ ์“ฐ๊ธฐ, ์ปค๋ฉ˜ํŠธ ์ž˜ ๋‹ฌ๊ธฐ, ์ฝ”๋“œ๋ฅผ ์ ์ ˆํ•œ ํฌ๋งท์œผ๋กœ ๋งž์ถฐ์„œ ๋งŒ๋“ค๊ธฐ์™€ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ๋˜๋Š” ํ‘œ๋ฉด์ ์ธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์€์ง€๋ฅผ ์•Œ์•„๊ฐ€ ๋ด…์‹œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์€ 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. NamesThat 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 intoBlocks ์ง€๊ธˆ ์ด์•ผ๊ธฐ ๋“œ๋ฆด ๋‚ด์šฉ์€ ํ”„๋กœ๊ทธ๋žจ ์งค ๋•Œ๋ถ€ํ„ฐ ์•”๋ฌต์ ์œผ๋กœ ๋งจ๋‚  ๋“ค์—ˆ๋˜ ์ด์•ผ๊ธฐ์ง€๋งŒ, ํ™•์ธ ์ฐจ์›์—์„œ ํ•œ ๋ฒˆ ๋ณด ๊ณ  ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์šฐ์„  ์ฝ”๋“œ๋ฅผ ๋ด…๋‹ˆ๋‹ค. ์œ„ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์‚ฐ๋งŒํ•˜์ฃ ? ์ด๋Š” ์„ ์–ธ ์‹œ์ ์—๋„ ์œ ์‚ฌํ•œ ์†์„ฑ๋“ค๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•˜์ง€ ์•Š์•˜ ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ข€ ๋” ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ์˜๋ฏธ๊ฐ€ ์œ ์‚ฌํ•œ ๊ฒƒ๋“ค์„ ๋ฉ์–ด๋ฆฌ๋กœ ๋งŒ๋“ค์–ด ๋‘”๋‹ค๋Š” ๋А๋‚Œ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฃผ์„๊นŒ์ง€ ํ•ด์„œ ๊ตฌ๋ถ„๋˜๋Š” ์˜์—ญ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋„ฃ์–ด์ฃผ๋‹ˆ ๋ณด๊ธฐ ์ข‹์ฃ ? ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๋‹ค๋ฅผ ๋– ๋‚˜์„œ, ๋ณด๊ธฐ ์ข‹์œผ๋ฉด ๋ณด๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๋”์šฑ ๋“ค๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์„ ์–ธ์„ ์ฒ˜์Œ์— ๋ณธ ์˜ˆ์™€ ๊ฐ™์ด ํ•ด ์ค€ ์ฝ”๋“œ๋ฅผ ๋ณธ๋‹ค๋ฉด, ๋ณด์ž ๋งˆ์ž ๋” ์ด์ƒ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์ ‘ํ•œ๋‹ค๋ฉด, ์™ ์ง€ ๋ณผ๋งŒํ•˜๊ฒ ์ฃ ? ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ธ์‹๋˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋ฉด ๋งค๋ฒˆ ์ด์•ผ๊ธฐ ํ•˜์ง€๋งŒ, ์กฐ๊ทธ๋งŒ ์ฝ๋Š” ์ด๋ฅผ ๋ฐฐ๋ คํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • 18.
    Break Code intoโ€œParagraphsโ€ ์ด ๋‚ด์šฉ์€ ์•ž์„  ๋‚ด์šฉ๊ณผ ์ค‘๋ณต๋˜๋Š” ๊ฐ์ด ์žˆ๋Š” ๋‚ด์šฉ์ธ๋ฐ, ์„ ์–ธ๋ถ€ ์™ธ์— ์‹ค์ œ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ์— ์žˆ์–ด์„œ๋„ ์˜๋ฏธ ๋‹จ ์œ„๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฌถ์–ด ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”๊ฐ€ ์„ค๋ช… ์—†์ด ๋‚˜์œ ์˜ˆ์™€ ์ข‹์€ ์˜ˆ๋ฅผ ๋ฐ”๋กœ ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. ์ข€ ์ •๋ฆฌํ•ด์•ผ๊ฒ ์ฃ ! ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ด์•ผ๊ธฐ ๋“œ๋ฆฌ์ง€๋งŒ, ๋‚จ์˜ ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ๋ด์˜จ ๊ฒƒ ๊ฐ™์ด โ€˜๋ญ์•ผ ์ด๊ฑฐ~โ€™ ์•„๋‹ˆ๋ฉด โ€˜์Œ ๊น”๋”ํ•œ๋ฐ.โ€™ ์ด๋ ‡๊ฒŒ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. Summary ์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ๋‚ด์šฉ์€ ์ฝ”๋“œ ๋ชจ์–‘์ƒˆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ์ด์•ผ๊ธฐ ๋“œ๋ฆฐ ๋‚ด์šฉ์€ coding convention์— ์˜ํ•ด์„œ ๊ธฐ์ˆ ์ด ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ๊นŒ์ง€ ํ•˜๊ธฐ๋Š” ๋„ˆ๋ฌด ์ œ์•ฝ์ ์ด๋ผ ์ด์•ผ๊ธฐ ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋“ค ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ชจ๋“  ๋‚ด์šฉ์—๋Š” ๋‹ค์Œ ์ƒ๊ฐ์ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.
  • 19.
    ์œ ์‚ฌํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๊ฒƒ๋“ค์€ ๋ฝ‘์•„์ฃผ๊ณ , ๋ชจ์•„์ค์‹œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์•„๊ฐ€ ์œ ์‚ฌํ•œ ์ฝ”๋“œ๋Š” ์œ ์‚ฌํ•œ ๋ชจ์Šต์„ ์ทจํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
  • 20.
    Chapter 5. KnowingWhat 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. MakingComments 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) = โ€œโ€ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํžˆ ๊ฐ€์ด๋“œ๋ฅผ ๋“œ๋ ธ์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ช‡๊ฐ€์ง€ ํŒ์— ๋‹ด๊ธด ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋งˆ์Œ. ์ฝ๋Š” ์ด๊ฐ€ ํŽธํ•˜๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ฃผ์„์„ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์งง๊ณ ๋„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๋งˆ์Œ์„ ํ•ญ์ƒ ๊ฐ€์ง€๊ณ  ์ฃผ์„์„ ์“ฐ๋„๋ก ํ•ฉ์‹œ๋‹ค.