๐ Book/โ Clean Code
![[Book] ํด๋ฆฐ ์ํคํ
์ฒ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdO2F9%2FbtrR8JNufCw%2FldYzcqbeYkHutOiU9mC7rk%2Fimg.jpg)
[Book] ํด๋ฆฐ ์ํคํ ์ฒ
ํด๋ฆฐ ์ํคํ ์ฒ 1. ์ํํธ์จ์ด ์ํคํ ์ฒ์ ์ค์์ฑ ์ํํธ์จ์ด๊ฐ ์ ๊ณตํ๋ ๊ฐ์น ์ค ๊ธฐ๋ฅ๊ณผ ๊ตฌ์กฐ ์ค ๋ณดํต ๊ธฐ๋ฅ์ ์ง์คํ์ง๋ง, ํด๋ฆฐ ์ํคํ ์ฒ๋ฅผ ์ ์ํ ์ํด ๋ฐฅ์ ๊ตฌ์กฐ๊ฐ ์ค์ํ๋ค๊ณ ๋งํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ถ๊ตฌํด์ผ ํ๋ ์ฝ๋ ๊ตฌ์กฐ๋ ์ ๋ฆฌ๊ฐ ์๋๊ฑฐ๋ ๋๋ฌด ๊น๋ํ ์ฝ๋๋ณด๋ค ๋ง์ ๊ฒ๋ค์ด ์์ง๋ง ๋๋ฆ์ ์ง์๊ฐ ์์ด ์ ๋ฆฌ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ข์ ์ํคํ ์ฒ๊ฐ ์ ์ค์ํ ๊น? ์ฝ๋๋ฅผ ์ฝ๊ณ ์ดํดํ๊ณ ์์ ๋ฐ ์ถ๊ฐํ๋ ์ ์ง ๋ณด์์ ๊ณผ์ ์์ ์์ํ๊ฒ ์งํํ๊ธฐ ์ํด์๋ ๊ธฐ๋ฅ๊ณผ ๋น์ทํ๊ฒ ๊ตฌ์กฐ๊ฐ ์ค์ํ๋ค. ๊ตฌ์กฐ๋ ๊ธฐ๋ฅ์ ๋ท๋ฐ์นจํ๊ณ ๋ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๊ฒ ํด ์ค๋ค. ๊ตฌ์กฐ๊ฐ ์ข์ง๋ง ๊ธฐ๋ฅ์ด ๋์๋ฉด, ์ง๊ธ์ ๋ถ์กฑํ์ง๋ง ์ ์ง ๋ณด์์ ๋น์ฉ์ด ์ ๊ฒ ๋ ๋ค. ํ์ง๋ง ๊ทธ ๋ฐ๋๋ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค. 2. ์ข์ ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ 1) ์ํคํ ์ฒ ์์น ์ฝ๋๋ฅผ..
[Book] ํด๋ฆฐ์ฝ๋ - 14์ฅ ์ ์ง์ ์ธ ๊ฐ์
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์ฅ ๋์์ฑ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq1lf4%2FbtqXY0P78nE%2FBCrEJnSOStahSJdOkgb2I1%2Fimg.png)
[Book] ํด๋ฆฐ์ฝ๋ - 13์ฅ ๋์์ฑ
13์ฅ ๋์์ฑ ๋์์ฑ๊ณผ ๊น๋ํ ์ฝ๋๋ ์๋ฆฝํ๊ธฐ ์ด๋ ต๋ค. 1. ๋์์ฑ์ด ํ์ํ ์ด์ ? ๋์์ฑ์ ๊ฒฐํฉ์ ์์ ๋ ์ ๋ต์ด๋ค. ์ฆ, ๋ฌด์๊ณผ ์ธ์ ๋ฅผ ๋ถ๋ฆฌํ๋ ์ ๋ต์ด๋ค. ์ค๋ ๋๊ฐ ํ๋์ธ ํ๋ก๊ทธ๋จ์ ๋ฌด์๊ณผ ์ธ์ ๊ฐ ์๋ก ๋ฐ์ ํ๋ค. ๊ทธ๋์ ํธ์ถ ์คํ์ ์ดํด๋ณด๋ฉด ํ๋ก๊ทธ๋จ ์ํ๊ฐ ๊ณง๋ฐ๋ก ๋๋ฌ๋๋ค. ํํ ๋จ์ผ ์ค๋ ๋ ํ๋ก๊ทธ๋จ์ ์ ์ง์ (breakpoint)์ ์ ํ ํ ์ด๋ ์ ์ง์ ์ธ์ง ์ดํด๋ณด๋ฉด์ ์์คํ ์ํ๋ฅผ ํ์ ํ๋ค. ๋ฌด์๊ณผ ์ธ์ ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ์ ํจ์จ์ด ๊ทน์ ์ผ๋ก ๋์์ง๋ค. ๊ตฌ์กฐ์ ์ธ ๊ด์ ์์ ํ๋ก๊ทธ๋จ์ ๊ฑฐ๋ํ ๋ฃจํ ํ๋๊ฐ ์๋๋ผ ์์ ํ๋ ฅ ํ๋ก๊ทธ๋จ ์ฌ๋ฟ์ผ๋ก ๋ณด์ธ๋ค. ๋ฐ๋ผ์ ์์คํ ์ ์ดํดํ๊ธฐ๊ฐ ์ฝ๊ณ ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ๋ ์ฝ๋ค. ๊ตฌ์กฐ์ ๊ฐ์ ๋ง์ ์ํด ๋์์ฑ์ ์ฑํํ๋ ๊ฒ์ ์๋๋ค. ์ด๋ค ์์คํ ์ ์๋ต ์๊ฐ๊ณผ ์์ ์ฒ๋ฆฌ๋(t..
[Book] ํด๋ฆฐ์ฝ๋ - 12์ฅ ์ฐฝ๋ฐ์ฑ
12์ฅ ์ฐฝ๋ฐ์ฑ ์ฐฝ๋ฐ์ฑ์ด๋? ํ์ ์ฒด๊ณ๋ก๋ถํฐ ์๊ฒจ๋์ง๋ง, ๊ทธ ํ์ ์ฒด๊ณ๋ก ํ์๋์ง ์๋ ์์ฑ 1. ์ฐฝ๋ฐ์ ์ค๊ณ๋ก ๊น๋ํ ์ฝ๋๋ฅผ ๊ตฌํํ์ ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๋ค. ์ค๋ณต์ ์์ค๋ค. ํ๋ก๊ทธ๋๋จธ ์๋๋ฅผ ํํํ๋ค. ํด๋์ค์ ๋ฉ์๋ ์๋ฅผ ์ต์๋ก ์ค์ธ๋ค. ์ ๋ค ๊ฐ์ง ๊ท์น์ ์ฐฉ์คํ๊ฒ ๋ฐ๋ฅด๊ธฐ๋ง ํ๋ฉด ์ฐ์ํ ์ค๊ณ๊ฐ ๋์ค๊ณ ์ฝ๋ ๊ตฌ์กฐ์ ์ค๊ณ๋ฅผ ํ์ ํ๊ธฐ ์ฝ๊ณ SRP(๋จ์ผ ์ฑ ์ ์์น)๋ DIP(์์กด ๊ด๊ณ ์ญ์ ์์น)์ ๊ฐ์ ์์น์ ์ ์ฉํ๊ธฐ ์ฝ๊ณ ์ฐฝ๋ฐ์ฑ์ ์ด์งํ๋ค. 2. ๋จ์ํ ์ค๊ณ ๊ท์น 1 : ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๋ผ ๋ฌด์๋ณด๋ค ๋จผ์ , ์ค๊ณ๋ ์๋ํ ๋๋ก ๋์๊ฐ๋ ์์คํ ์ ๋ด๋์์ผ ํ๋ค. ๋ฌธ์๋ก๋ ์์คํ ์ ์๋ฒฝํ๊ฒ ์ค๊ณํ์ง๋ง ์์คํ ์ด ์๋ํ ๋๋ก ๋์๊ฐ๋์ง ๊ฒ์ฆํ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๋ฌธ์ ์์ฑ์ ์ํด ํฌ์ํ ๋ ธ๋ ฅ์ ๋ํ ๊ฐ์น๋ ..
![[Book] ํด๋ฆฐ์ฝ๋ - 11์ฅ ์์คํ
](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbidcQm%2FbtqWU644kl2%2FVwNrIAO7lb600LE1yE4a70%2Fimg.png)
[Book] ํด๋ฆฐ์ฝ๋ - 11์ฅ ์์คํ
11์ฅ ์์คํ ๋์๋ฅผ ์ธ์ด๋ค๋ฉด? ์จ๊ฐ ์ธ์ธํ ์ฌํญ์ ํผ์์ ์ง์ ๊ด๋ฆฌํ ์ ์์๊น? ๋ถ๊ฐ๋ฅํ๋ค. ๋์์๋ ํฐ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ์ฌ๋๋ค๋ ์์ผ๋ฉฐ ์๋, ์ ๋ ฅ, ๊ตํต ๋ฑ ์์ ์ฌํญ์ ์ง์คํ๋ ์ฌ๋๋ค๋ ์๋ค. ๋์๊ฐ ๋์๊ฐ๋ ๋ ๋ค๋ฅธ ์ด์ ๋ ์ ์ ํ ์ถ์ํ์ ๋ชจ๋ํ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ํฐ ๊ทธ๋ฆผ์ ์ดํดํ์ง ๋ชปํ ์ง๋ผ๋ ๊ฐ์ธ๊ณผ ๊ฐ์ธ์ด ๊ด๋ฆฌํ๋ ๊ตฌ์ฑ์์๋ ํจ์จ์ ์ผ๋ก ๋์๊ฐ๋ค. ํํ ์ํํธ์จ์ด ํ๋ ๋์์ฒ๋ผ ๊ตฌ์ฑํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ ์ ์ํ๋ ์์คํ ์ ๋น์ทํ ์์ค์ผ๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๊ฑฐ๋ ์ถ์ํ๋ฅผ ์ด๋ค๋ด์ง ๋ชปํ๋ค. ๊นจ๋ํ ์ฝ๋๋ฅผ ๊ตฌํํ๋ฉด ๋ฎ์ ์ถ์ํ ์์ค์์ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ฌ์์ง๋ค. ์ด ์ฅ์์๋ ๋์ ์ถ์ํ ์์ค์ธ ์์คํ ์์๋ ๊นจ๋ํจ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณธ๋ค. 1. ์์คํ ์ ์๊ณผ ์์คํ ์ฌ์ฉ์ ๋ถ๋ฆฌํ๋ผ ์ํํธ์จ์ด ์์คํ ์ ์ค..
[Book] ํด๋ฆฐ์ฝ๋ - 10์ฅ ํด๋์ค
10์ฅ ํด๋์ค 1. ํด๋์ค ์ฒด๊ณ ํด๋์ค๋ฅผ ์ ์ํ๋ ํ์ค ์๋ฐ ๊ด๋ก์ ๋ฐ๋ฅด๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ณ์ ๋ชฉ๋ก์ด ๋์ค๊ณ ๋ณ์ ๋ชฉ๋ก ๋ค์์๋ ๊ณต๊ฐ ํจ์๊ฐ ๋์จ๋ค. ๋ณ์: ์ ์ ๊ณต๊ฐ ์์ -> ์ ์ ๋น๊ณต๊ฐ ๋ณ์ -> ๋น๊ณต๊ฐ ์ธ์คํด์ค ๋ณ์ -> ๊ณต๊ฐ ๋ณ์ ๋น๊ณต๊ฐ ํจ์๋ ์์ ์ ํธ์ถํ๋ ๊ณต๊ฐ ํจ์ ์งํ์ ๋ฃ๋๋ค. ์ฆ, ์ถ์ํ ๋จ๊ณ๊ฐ ์์ฐจ์ ์ผ๋ก ๋ด๋ ค๊ฐ๋ค. 1) ์บก์ํ ๋ณ์์ ์ ํธ๋ฆฌํฐ ํจ์๋ ๊ฐ๋ฅํ ๊ณต๊ฐํ์ง ์๋ ํธ์ด ๋ซ์ง๋ง ๋ฐ๋์ ์จ๊ฒจ์ผ ํ๋ค๋ ๋ฒ์น๋ ์๋ค. ๋๋ก๋ protected๋ก ์ ์ธํด ํ ์คํธ ์ฝ๋์ ์ ๊ทผ์ ํ์ฉํ๊ธฐ๋ ํ๋ค. ๊ทธ๋ฌ๋ ๊ทธ์ ์ ๋น๊ณต๊ฐ ์ํ๋ฅผ ์ ์งํ ์จ๊ฐ ๋ฐฉ๋ฒ์ ๊ฐ๊ตฌํ๊ณ ์บก์ํ๋ฅผ ํธ๋ ๊ฒฐ์ ์ ์ตํ์ ์๋จ์ด๋ค. 2. ํด๋์ค๋ ์์์ผ ํ๋ค! ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋์ค ์ค๊ณ์ ๊ธฐ๋ณธ์ '์๊ฒ'์ด๋ค. ํฐ ํด๋์ค ๋ช ๊ฐ๊ฐ ..