[Book] ํด๋ฆฐ์ฝ”๋“œ - 14์žฅ ์ ์ง„์ ์ธ ๊ฐœ์„ 
ยท
๐Ÿ“ Book/โœ Clean Code
14์žฅ ์ ์ง„์ ์ธ ๊ฐœ์„  ์ถœ๋ฐœ์€ ์ข‹์•˜์œผ๋‚˜ ํ™•์žฅ์„ฑ์ด ๋ถ€์กฑํ–ˆ๋˜ ๋ชจ๋“ˆ์„ ์†Œ๊ฐœํ•˜๊ณ  ๊ทธ ๋ชจ๋“ˆ์„ ๊ฐœ์„ ํ•˜๋ฉฐ ์ •๋ฆฌํ•˜๋Š” ๋‹จ๊ณ„๋กœ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. 1. Args ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋‹ค ๋ณด๋ฉด ์ข…์ข… ๋ช…๋ นํ–‰ ์ธ์ˆ˜์˜ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธด๋‹ค. ํŽธ๋ฆฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์—†๋‹ค๋ฉด main ํ•จ์ˆ˜๋กœ ๋„˜์–ด์˜ค๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ถ„์„ํ•˜๊ฒŒ ๋œ๋‹ค. ์ƒˆ๋กœ ์งค ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ Args๋ผ ๋ถ€๋ฅผ ๊ฒƒ์ด๊ณ  ์‚ฌ์šฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. Args ์ƒ์„ฑ์ž์— ์ธ์ˆ˜ ๋ฌธ์ž์—ด๊ณผ ํ˜•์‹ ๋ฌธ์ž์—ด์„ ๋„˜๊ฒจ Args ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„ Args ์ธ์Šคํ„ด์Šค์—๋‹ค ์ธ์ˆ˜ ๊ฐ’์„ ์งˆ์˜ํ•œ๋‹ค. public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); int ..
[Book] ํด๋ฆฐ์ฝ”๋“œ - 13์žฅ ๋™์‹œ์„ฑ
ยท
๐Ÿ“ Book/โœ Clean Code
13์žฅ ๋™์‹œ์„ฑ ๋™์‹œ์„ฑ๊ณผ ๊น”๋”ํ•œ ์ฝ”๋“œ๋Š” ์–‘๋ฆฝํ•˜๊ธฐ ์–ด๋ ต๋‹ค. 1. ๋™์‹œ์„ฑ์ด ํ•„์š”ํ•œ ์ด์œ ? ๋™์‹œ์„ฑ์€ ๊ฒฐํ•ฉ์„ ์—†์• ๋Š” ์ „๋žต์ด๋‹ค. ์ฆ‰, ๋ฌด์—‡๊ณผ ์–ธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ „๋žต์ด๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡๊ณผ ์–ธ์ œ๊ฐ€ ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ˜ธ์ถœ ์Šคํƒ์„ ์‚ดํŽด๋ณด๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ๊ฐ€ ๊ณง๋ฐ”๋กœ ๋“œ๋Ÿฌ๋‚œ๋‹ค. ํ”ํžˆ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ์€ ์ •์ง€์ (breakpoint)์„ ์ •ํ•œ ํ›„ ์–ด๋Š ์ •์ง€์ ์ธ์ง€ ์‚ดํŽด๋ณด๋ฉด์„œ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•œ๋‹ค. ๋ฌด์—‡๊ณผ ์–ธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ์™€ ํšจ์œจ์ด ๊ทน์ ์œผ๋กœ ๋‚˜์•„์ง„๋‹ค. ๊ตฌ์กฐ์ ์ธ ๊ด€์ ์—์„œ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฑฐ๋Œ€ํ•œ ๋ฃจํ”„ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์€ ํ˜‘๋ ฅ ํ”„๋กœ๊ทธ๋žจ ์—ฌ๋Ÿฟ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ  ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค. ๊ตฌ์กฐ์  ๊ฐœ์„ ๋งŒ์„ ์œ„ํ•ด ๋™์‹œ์„ฑ์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์–ด๋–ค ์‹œ์Šคํ…œ์€ ์‘๋‹ต ์‹œ๊ฐ„๊ณผ ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰(t..
[Book] ํด๋ฆฐ์ฝ”๋“œ - 12์žฅ ์ฐฝ๋ฐœ์„ฑ
ยท
๐Ÿ“ Book/โœ Clean Code
12์žฅ ์ฐฝ๋ฐœ์„ฑ ์ฐฝ๋ฐœ์„ฑ์ด๋ž€? ํ•˜์œ„ ์ฒด๊ณ„๋กœ๋ถ€ํ„ฐ ์ƒ๊ฒจ๋‚˜์ง€๋งŒ, ๊ทธ ํ•˜์œ„ ์ฒด๊ณ„๋กœ ํ™˜์›๋˜์ง€ ์•Š๋Š” ์†์„ฑ 1. ์ฐฝ๋ฐœ์  ์„ค๊ณ„๋กœ ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ž ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ค‘๋ณต์„ ์—†์•ค๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜๋„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์ˆ˜๋ฅผ ์ตœ์†Œ๋กœ ์ค„์ธ๋‹ค. ์œ„ ๋„ค ๊ฐ€์ง€ ๊ทœ์น™์„ ์ฐฉ์‹คํ•˜๊ฒŒ ๋”ฐ๋ฅด๊ธฐ๋งŒ ํ•˜๋ฉด ์šฐ์ˆ˜ํ•œ ์„ค๊ณ„๊ฐ€ ๋‚˜์˜ค๊ณ  ์ฝ”๋“œ ๊ตฌ์กฐ์™€ ์„ค๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๊ณ  SRP(๋‹จ์ผ ์ฑ…์ž„ ์›์น™)๋‚˜ DIP(์˜์กด ๊ด€๊ณ„ ์—ญ์ „ ์›์น™)์™€ ๊ฐ™์€ ์›์น™์„ ์ ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ์ฐฝ๋ฐœ์„ฑ์„ ์ด‰์ง„ํ•œ๋‹ค. 2. ๋‹จ์ˆœํ•œ ์„ค๊ณ„ ๊ทœ์น™ 1 : ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ผ ๋ฌด์—‡๋ณด๋‹ค ๋จผ์ €, ์„ค๊ณ„๋Š” ์˜๋„ํ•œ ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š” ์‹œ์Šคํ…œ์„ ๋‚ด๋†“์•„์•ผ ํ•œ๋‹ค. ๋ฌธ์„œ๋กœ๋Š” ์‹œ์Šคํ…œ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์„ค๊ณ„ํ–ˆ์ง€๋งŒ ์‹œ์Šคํ…œ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ๊ฒ€์ฆํ•  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋ฉด ๋ฌธ์„œ ์ž‘์„ฑ์„ ์œ„ํ•ด ํˆฌ์žํ•œ ๋…ธ๋ ฅ์— ๋Œ€ํ•œ ๊ฐ€์น˜๋Š” ..
[Book] ํด๋ฆฐ์ฝ”๋“œ - 11์žฅ ์‹œ์Šคํ…œ
ยท
๐Ÿ“ Book/โœ Clean Code
11์žฅ ์‹œ์Šคํ…œ ๋„์‹œ๋ฅผ ์„ธ์šด๋‹ค๋ฉด? ์˜จ๊ฐ– ์„ธ์„ธํ•œ ์‚ฌํ•ญ์„ ํ˜ผ์ž์„œ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋„์‹œ์—๋Š” ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ์œผ๋ฉฐ ์ˆ˜๋„, ์ „๋ ฅ, ๊ตํ†ต ๋“ฑ ์ž‘์€ ์‚ฌํ•ญ์— ์ง‘์ค‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋‹ค. ๋„์‹œ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋Š” ์ ์ ˆํ•œ ์ถ”์ƒํ™”์™€ ๋ชจ๋“ˆํ™” ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ• ์ง€๋ผ๋„ ๊ฐœ์ธ๊ณผ ๊ฐœ์ธ์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ๋Š” ํšจ์œจ์ ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. ํ”ํžˆ ์†Œํ”„ํŠธ์›จ์–ด ํŒ€๋„ ๋„์‹œ์ฒ˜๋Ÿผ ๊ตฌ์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ์ œ์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ์€ ๋น„์Šทํ•œ ์ˆ˜์ค€์œผ๋กœ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒํ™”๋ฅผ ์ด๋ค„๋‚ด์ง€ ๋ชปํ•œ๋‹ค. ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋‚ฎ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์—์„œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์ด ์žฅ์—์„œ๋Š” ๋†’์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ธ ์‹œ์Šคํ…œ์—์„œ๋„ ๊นจ๋—ํ•จ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณธ๋‹ค. 1. ์‹œ์Šคํ…œ ์ œ์ž‘๊ณผ ์‹œ์Šคํ…œ ์‚ฌ์šฉ์„ ๋ถ„๋ฆฌํ•˜๋ผ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ์ค€..
[Book] ํด๋ฆฐ์ฝ”๋“œ - 10์žฅ ํด๋ž˜์Šค
ยท
๐Ÿ“ Book/โœ Clean Code
10์žฅ ํด๋ž˜์Šค 1. ํด๋ž˜์Šค ์ฒด๊ณ„ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ํ‘œ์ค€ ์ž๋ฐ” ๊ด€๋ก€์— ๋”ฐ๋ฅด๋ฉด ๊ฐ€์žฅ ๋จผ์ € ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ๋‚˜์˜ค๊ณ  ๋ณ€์ˆ˜ ๋ชฉ๋ก ๋‹ค์Œ์—๋Š” ๊ณต๊ฐœ ํ•จ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค. ๋ณ€์ˆ˜: ์ •์  ๊ณต๊ฐœ ์ƒ์ˆ˜ -> ์ •์  ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜ -> ๋น„๊ณต๊ฐœ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ -> ๊ณต๊ฐœ ๋ณ€์ˆ˜ ๋น„๊ณต๊ฐœ ํ•จ์ˆ˜๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ณต๊ฐœ ํ•จ์ˆ˜ ์งํ›„์— ๋„ฃ๋Š”๋‹ค. ์ฆ‰, ์ถ”์ƒํ™” ๋‹จ๊ณ„๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค. 1) ์บก์Šํ™” ๋ณ€์ˆ˜์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋Š” ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ๋‚ซ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ˆจ๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ๋ฒ•์น™๋„ ์—†๋‹ค. ๋•Œ๋กœ๋Š” protected๋กœ ์„ ์–ธํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ์ „์— ๋น„๊ณต๊ฐœ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์˜จ๊ฐ– ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ•˜๊ณ  ์บก์Šํ™”๋ฅผ ํ‘ธ๋Š” ๊ฒฐ์ •์€ ์ตœํ›„์˜ ์ˆ˜๋‹จ์ด๋‹ค. 2. ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค! ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ž˜์Šค ์„ค๊ณ„์˜ ๊ธฐ๋ณธ์€ '์ž‘๊ฒŒ'์ด๋‹ค. ํฐ ํด๋ž˜์Šค ๋ช‡ ๊ฐœ๊ฐ€ ..
[Book] ํด๋ฆฐ์ฝ”๋“œ - 9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
ยท
๐Ÿ“ Book/โœ Clean Code
9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ง€๋‚œ 1997๋…„๋งŒ ํ•ด๋„ TDD๋ผ๋Š” ๊ฐœ๋…์„ ์•„๋ฌด๋„ ๋ชฐ๋ž๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ž€ ์ž๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ„๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ ํ™•์ธํ•˜๋Š” ์ผํšŒ์„ฑ ์ฝ”๋“œ์— ๋ถˆ๊ณผํ–ˆ๋‹ค. ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต๋“ค์—ฌ ๊ตฌํ˜„ํ•œ ํ›„ ์ž„์‹œ ์ฝ”๋“œ๋ฅผ ๊ธ‰์กฐํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ๋Œ€๊ฐœ๋Š” ๊ฐ„๋‹จํ•œ ๋“œ๋ผ์ด๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ด ์ž์‹ ์ด ์ง  ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ˆˆ๋ถ€์‹  ์„ฑ์žฅ์„ ์ด๋ค˜๋‹ค. ๊ผฌ์น˜๊ผฌ์น˜ ๋”ฐ์ง€๋ฉฐ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ๋„๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ  ํ†ต๊ณผํ•œ ํ›„์—๋Š” ๋‚ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๊ณต๊ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ๋‚ด ์ฝ”๋“œ๋ฅผ ๊ฐ™์€ ์†Œ์Šค ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ์ฒดํฌ์ธํ•œ๋‹ค. ์• ์ž์ผ๊ณผ TDD ๋•ํƒ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ด๋ฏธ ๋งŽ์•„์กŒ์œผ๋ฉฐ ์ ์  ๋” ๋Š˜์–ด๋‚˜๋Š” ์ถ”์„ธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ถ„์•ผ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ ..