[Book] ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜
ยท
๐Ÿ“ Book/โœ Clean Code
ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ 1. ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์š”์„ฑ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜ ์ค‘ ๊ธฐ๋Šฅ๊ณผ ๊ตฌ์กฐ ์ค‘ ๋ณดํ†ต ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜์ง€๋งŒ, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ œ์•ˆํ•œ ์—‰ํด ๋ฐฅ์€ ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ถ”๊ตฌํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋Š” ์ •๋ฆฌ๊ฐ€ ์•ˆ๋๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๊น”๋”ํ•œ ์ฝ”๋“œ๋ณด๋‹ค ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์ง€๋งŒ ๋‚˜๋ฆ„์˜ ์งˆ์„œ๊ฐ€ ์žˆ์–ด ์ •๋ฆฌ๋œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์™œ ์ค‘์š”ํ• ๊นŒ? ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€ํ•˜๋Š” ์œ ์ง€ ๋ณด์ˆ˜์˜ ๊ณผ์ •์—์„œ ์ˆ˜์›”ํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋Šฅ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ๊ตฌ์กฐ๋Š” ๊ธฐ๋Šฅ์„ ๋’ท๋ฐ›์นจํ•˜๊ณ  ๋” ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค. ๊ตฌ์กฐ๊ฐ€ ์ข‹์ง€๋งŒ ๊ธฐ๋Šฅ์ด ๋‚˜์˜๋ฉด, ์ง€๊ธˆ์€ ๋ถ€์กฑํ•˜์ง€๋งŒ ์œ ์ง€ ๋ณด์ˆ˜์˜ ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋ฐ˜๋Œ€๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค. 2. ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• 1) ์•„ํ‚คํ…์ฒ˜ ์›์น™ ์ฝ”๋“œ๋ฅผ..
[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. ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค! ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ž˜์Šค ์„ค๊ณ„์˜ ๊ธฐ๋ณธ์€ '์ž‘๊ฒŒ'์ด๋‹ค. ํฐ ํด๋ž˜์Šค ๋ช‡ ๊ฐœ๊ฐ€ ..