2023. 9. 26. 16:48ใ๊ธฐ์ ์์ /Clean Code
๐ฉ๐ป 2์ฅ. ์๋ฏธ์๋ ์ด๋ฆ ๋ณด๊ณ , ํ์ฌ ์งํ ์ค์ธ ํ๋ก์ ํธ์ ๋ํด์ ์ ์ฉํ๋ ค๊ณ ๋ณด๋๋ฐ..์.. ๋๋ฆ ๋ณ์๋ช ์ด๋ ๋ฉ์๋๋ช ์ง์ ๋ ์๊ฐํ๊ณ ์ง์๋ค๊ณ ์๊ฐํ์๋๋ฐ ๊ฐํ์ด๋ค ใ ใ ์ด๋์๋ถํฐ ์ด๋ป๊ฒ ๊ณ ์ณ์ผํ ์ง.. ^^;;
์กฐ๊ธ์ฉ ๊ณ ์ณ๊ฐ์..! ๋ผ๋ ๋ง์ธ๋๋ก ๋ด์ผ์ง.. ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก๋ ๊ผญ ๋!!! ์๊ฐํ๊ณ ์ด๋ฆ ์ง์ ๊ฒ์ด๋ค.. ์ ์์ ํํ์ค ใ
1. ๋ณ์(๋ฉ์๋ ๋๋ ํด๋์ค) ์ ์กด์ฌ ์ด์ ๋ ?
2. ์ํ ๊ธฐ๋ฅ์ ?
3. ์ฌ์ฉ ๋ฐฉ๋ฒ์ ?
์ต์ํ ์ด 3๊ฐ์ง ์ง๋ฌธ์ ํ๊ณ ์ด๋ฆ ์ง๊ธฐ ..!!! ์ด ๊ธ์ ๋ณด๋ ๋ถ(?) ๋ค์ ์ด๋ ๊ฒ ํ๊ณ ๊ณ์ ๊ฐ์..?
์๋ฌดํผ.. ์๋ฏธ ์๋ ์ด๋ฆ ์ง๊ธฐ๋ฅผ ๊ธฐ์ตํ๋ฉฐ 3์ฅ ํจ์์ ๋ํด์ ์ค๋์ ๊ณต๋ถํ ๊ฒ์ด๋ค.
์๊ฒ ๋ง๋ค์ด๋ผ p.42
ํจ์๋ฅผ ๋ง๋๋ ์ฒซ์งธ ๊ท์น์ '์๊ฒ!' ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์งธ ๊ท์น์ '๋ ์๊ฒ!'๋ค.
๋ธ๋ก๊ณผ ๋ค์ฌ์ฐ๊ธฐ
if/else๋ฌธ, while๋ฌธ ๋ฑ์ ๋ค์ด๊ฐ๋ ๋ธ๋ก์ ํ ์ค์ด์ด์ผ ํ๋ค๋ ์๋ฏธ๊ณ ๋๊ฐ ๊ฑฐ๊ธฐ์ ํจ์๋ฅผ ํธ์ถํ๋ค.
๊ทธ๋ฌ๋ฉด ๋ฐ๊นฅ์ ๊ฐ์ธ๋ ํจ์๊ฐ ์์์ง ๋ฟ ์๋๋ผ, ๋ธ๋ก ์์์ ํธ์ถํ๋ ํจ์ ์ด๋ฆ์ ์ ์ ํ ์ง๋๋ค๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ๋ ์ฌ์์ง๋ค.
ํจ์์์ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ 1๋จ์ด๋ 2๋จ์ ๋์ด์๋ฉด ์๋๋ค. ๋น์ฐํ ๋ง์ด์ง๋ง ๊ทธ๋์ผ ํจ์๋ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค.
๐ฉ๐ป ์.. ์ด๊ฑฐ ๊ฐ๋ฅํ๊ฐ ..? ์ถ๋ค... ์ ๋ง ๋ค ํจ์๋ก ๋ง๋ค์ด์ผ ๊ฐ๋ฅํ ์ผ์ธ๋ฐ..!!! ์ด๊ฒ ๋ง๋๊ฑด๊ฐ??? ์ผ๋จ ๋ ์ฝ์ด๋ด์ผ๊ฒ ๋ค..
์ฑ ์์ ๋์จ ์์ ๋ฅผ ๋ณด๋ฉด ํ์คํ ์ฝ๋๊ฐ ์งง์ผ๋๊น ์ดํด๋ ์ ๋๊ธด ํ๋๋ฐ..
ํ ๊ฐ์ง๋ง ํด๋ผ ! p.44
ํจ์๋ ํ ๊ฐ์ง๋ฅผ ํด์ผ ํ๋ค. ๊ทธ ํ๊ฐ์ง๋ฅผ ์ ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ง์ ํด์ผ ํ๋ค.
์ง์ ๋ ํจ์ ์ด๋ฆ ์๋์์ ์ถ์ํ ์์ค์ด ํ๋์ธ ๋จ๊ณ๋ง ์ํํ๋ค๋ฉด ๊ทธ ํจ์๋ ํ ๊ฐ์ง ์์ ๋ง ํ๋ค.
ํจ์๊ฐ 'ํ ๊ฐ์ง'๋ง ํ๋์ง ํ๋จํ๋ ๋ฐฉ๋ฒ์ด ํ๋ ์๋๋ฐ, ๋จ์ํ ๋ค๋ฅธ ํํ์ด ์๋๋ผ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ํจ์๋ฅผ ์ถ์ถํ ์ ์๋ค๋ฉด ๊ทธ ํจ์๋ ์ฌ๋ฌ ์์ ์ ํ๋ ์ ์ด๋ค.
ํ ๊ฐ์ง ์์ ๋ง ํ๋ ํจ์๋ ์์ฐ์ค๋ฝ๊ฒ ์ธ์ ์ ๋๋๊ธฐ ์ด๋ ต๋ค.
ํจ์ ๋น ์ถ์ํ ์์ค์ ํ๋๋ก ! p.45
ํจ์๊ฐ ํ์คํ 'ํ ๊ฐ์ง' ์์ ๋ง ํ๋ ค๋ฉด ํจ์ ๋ด ๋ชจ๋ ๋ฌธ์ฅ์ ์ถ์ํ ์์ค์ด ๋์ผํด์ผํ๋ค.
getHtml() ์ ์ถ์ํ ์์ค์ด ๋๋ค.
String pagePathName = PathParser.render(pagepath); ๋ ์ถ์ํ ์์ค์ด ์ค๊ฐ์ด๋ค.
๊ทธ๋ฆฌ๊ณ .append("\n") ์ ๊ฐ์ ์ฝ๋๋ ์ถ์ํ ์์ค์ด ์์ฃผ ๋ฎ๋ค.
ํ ํจ์ ๋ด์ ์ด๋ ๊ฒ ์ถ์ํ ์์ค์ด ์์ฌ ์์ผ๋ฉด ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ํท๊ฐ๋ฆฐ๋ค. ํน์ ํํ์ด ๊ทผ๋ณธ ๊ฐ๋ ์ธ์ง ์๋๋ฉด ์ธ๋ถ ์ฌํญ์ธ์ง ๊ตฌ๋ถํ๊ธฐ ์ด๋ ค์ด ํ์ด๋ค.
๋ด๋ ค๊ฐ๊ธฐ ๊ท์น
ํ ํจ์ ๋ค์์๋ ์ถ์ํ ์์ค์ด ํ ๋จ๊ณ ๋ฎ์ ํจ์๊ฐ ์จ๋ค. ์ฆ, ์์์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ์ผ๋ฉด ํจ์ ์ถ์ํ ์์ค์ด ํ ๋ฒ์ ํ ๋จ๊ณ์ฉ ๋ฎ์์ง๋ค.
๐ฉ๐ป ํจ์๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ํด์ผ ํ๋ค.. ๋ฌด์จ ๋ง์ ํ๊ณ ์ถ์์ง ์๊ฒ ๋๋ฐ... ์ถ์ํ ์์ค์ ๋์ผ ์ ํ๋๊ฑด ๋๋ฌด ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค... ์ด๊ฑธ ์ด๋ป๊ฒ ํ ์์ค์ผ๋ก๋ง ์ ์งํ์ง..? ๋ง์ ๊ณ ๋ฏผ์ด ํ์ํ ๊ฒ ๊ฐ๋ค.. ์์๊ฐ ํ์ํด ๐
์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ! p.49
์ข์ ์ด๋ฆ์ด ์ฃผ๋ ๊ฐ์น๋ ์๋ฌด๋ฆฌ ๊ฐ์กฐํด๋ ์ง๋์น์ง ์๋ค.
"์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ ๋ฃจํด์ด ๊ทธ๋๋ก ์ํํ๋ค๋ฉด ๊นจ๋ํ ์ฝ๋๋ผ๊ณ ๋ถ๋ฌ๋ ๋๊ฒ ๋ค." ํ ๊ฐ์ง๋ง ํ๋ ์์ ํจ์์ ์ข์ ์ด๋ฆ์ ๋ถ์ธ๋ค๋ฉด ์ด๋ฐ ์์น์ ๋ฌ์ฑํจ์ ์์ด ์ด๋ฏธ ์ ๋ฐ์ ์ฑ๊ณตํ๋ค. ํจ์๊ฐ ์๊ณ ๋จ์ํ ์๋ก ์์ ์ ์ธ ์ด๋ฆ์ ๊ณ ๋ฅด๊ธฐ๋ ์ฌ์์ง๋ค.
์ด๋ฆ์ด ๊ธธ์ด๋ ๊ด์ฐฎ๋ค. ๊ฒ๋จน์ ํ์์๋ค. ๊ธธ๊ณ ์์ ์ ์ธ ์ด๋ฆ์ด ์งง๊ณ ์ด๋ ค์ด ์ด๋ฆ๋ณด๋ค ์ข๋ค. ๊ธธ๊ณ ์์ ์ ์ธ ์ด๋ฆ์ด ๊ธธ๊ณ ์์ ์ ์ธ ์ฃผ์๋ณด๋ค ์ข๋ค. ํจ์ ์ด๋ฆ์ ์ ํ ๋๋ ์ฌ๋ฌ ๋จ์ด๊ฐ ์ฝ๊ฒ ์ฝํ๋ ๋ช ๋ช ๋ฒ์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฐ ๋ค์, ์ฌ๋ฌ ๋จ์ด๋ฅผ ์ฌ์ฉํด ํจ์ ๊ธฐ๋ฅ์ ์ ํํํ๋ ์ด๋ฆ์ ์ ํํ๋ค.
์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์ ๋จธ๋ฆฟ์์์๋ ์ค๊ณ๊ฐ ๋๋ ทํด์ง๋ฏ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ฌ์์ง๋ค.
์ด๋ฆ์ ๋ถ์ผ ๋๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค. ๋ชจ๋ ๋ด์์ ํจ์ ์ด๋ฆ์ ๊ฐ์ ๋ฌธ๊ตฌ, ๋ช ์ฌ, ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
๐ฉ๐ป : ์ด์ ์๋ฏธ์๋ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ๋ค๊ณ ๋ฉ์๋๋ช ๋ ์ข ๋ณด๋๋ฐ ์ด๋ฆ์ด ์ ์ ๊ธธ์ด์ ธ์ ๊ฒฐ๊ตญ ํฌ๊ธฐํ๋ ๋ฉ์๋๋ช ๋ค์ด ๋ช๊ฐ ์๋ค.. ์ด๊ฑฐ ๊ทธ๋ฅ ํ ๋ฒ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ๋๋ก ๋ณ๊ฒฝํด์ผ ๊ฒ ๋ค.
ํจ์ ์ธ์ p.50
ํจ์์์ ์ด์์ ์ธ ์ธ์ ๊ฐ์๋ 0๊ฐ (๋ฌดํญ) ์ด๋ค. ๋ค์์ 1๊ฐ(๋จํญ)๊ณ , ๋ค์์ 2๊ฐ(์ดํญ)๋ค. 3๊ฐ(์ผํญ)์ ๊ฐ๋ฅํ ํผํ๋ ํธ์ด ์ข๋ค!!!
์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ๋ inlcudeSetupPageInfo(new PageContent) ๋ณด๋ค includeSetupPage()๊ฐ ์ดํดํ๊ธฐ ๋ ์ฝ๋ค.
ํ ์คํธ ๊ด์ ์์ ๋ณด๋ฉด ์ธ์๋ ๋ ์ด๋ ต๋ค. ๊ฐ๊ฐ์ง ์ธ์ ์กฐํฉ์ผ๋ก ํจ์๋ฅผ ๊ฒ์ฆํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ค๊ณ ์์ํด๋ณด๋ผ! ์ธ์๊ฐ ์๋ค๋ฉด ๊ฐ๋จํ๋ค. ์ธ์๊ฐ ํ๋๋ผ๋ ๊ด์ฐฎ๋ค. ์ธ์๊ฐ 2๊ฐ๋ฉด ์กฐ๊ธ ๋ณต์กํด์ง๋ค.
์ต์ ์ ์ ๋ ฅ ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ฉฐ, ์ฐจ์ ์ ์ ๋ ฅ ์ธ์๊ฐ 1๊ฐ๋ฟ์ธ ๊ฒฝ์ฐ๋ค.
๋ง์ด ์ฐ๋ ๋จํญ ํ์
ํจ์์ ์ธ์ 1๊ฐ๋ฅผ ๋๊ธฐ๋ ์ด์ ๋ ๊ฐ์ฅ ํํ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ค. ํ๋๋ ์ธ์์ ์ง๋ฌธ์ ๋์ง๋ ๊ฒฝ์ฐ, boolean fileExists("MyFile") ์ด ์ข์ ์๋ค. ๋ค๋ฅธ ํ๋๋ ์ธ์๋ฅผ ๋ญ๊ฐ๋ก ๋ณํํด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ค.
InputStream fileOpen("MyFile") ์ String ํ์ ํ์ผ ์ด๋ฆ์ InputStream ์ผ๋ก ๋ณํํ๋ค. ์ด๋ค ๋ ๊ฒฝ์ฐ๋ ๋ ์๊ฐ ๋น์ฐํ๊ฒ ๋ฐ์๋ค์ธ๋ค. ํจ์ ์ด๋ฆ์ ์ง์ ๋๋ ๋ ๊ฒฝ์ฐ๋ฅผ ๋ถ๋ช ํ ๊ตฌ๋ถํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ๋๋ฌผ๊ฒ ์ฌ์ฉํ์ง๋ง ๋จํญ ํจ์ ํ์์ผ๋ก ์ด๋ฒคํธ๊ฐ ์๋ค. ์ด๋ฒคํธ ํจ์๋ ์ ๋ ฅ ์ธ์๋ง ์๊ณ ์ถ๋ ฅ ์ธ์๋ ์๋ค. ํ๋ก๊ทธ๋จ์ ํจ์ ํธ์ถ์ ์ด๋ฒคํธ๋ก ํด์ํด ์ ๋ ฅ ์ธ์๋ก ์์คํ ์ํ๋ฅผ ๋ฐ๊พผ๋ค. passwordAttempFailedNtimes(int attemps) ๊ฐ ์ข์ ์๋ค. ์ด๋ฒคํธ ํจ์๋ ์กฐ์ฌํด์ ์ฌ์ฉํ๊ณ , ์ด๋ฒคํธ๋ผ๋ ์ฌ์ค์ด ์ฝ๋์ ๋ช ํํ ๋๋ฌ๋์ผ ํ๋ค.
ํ๋๊ทธ ์ธ์
ํ๋๊ทธ ์ธ์๋ ์ถํ๋ค. ํจ์๋ก ๋ถ์ธ ๊ฐ์ ๋๊ธฐ๋ ๊ด๋ก๋ ์ ๋ง๋ก ๋์ฐํ๋ค. ์๋๊ณ ? ํจ์๊ฐ ํ๊บผ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์ฒ๋ฆฌํ๋ค๊ณ ๋๋๊ณ ๊ณตํํ๋ ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ํ๋๊ทธ ์ฐธ์ด๋ฉด ์ด๊ฑธํ๊ณ ๊ฑฐ์ง์ด๋ฉด ์ ๊ฑธ ํ๋ค๋ ๋ง์ด๋๊น !
์ดํญ ํจ์
์ธ์๊ฐ 2๊ฐ์ธ ํจ์๋ ์ธ์๊ฐ 1๊ฐ์ธ ํจ์๋ณด๋ค ์ดํดํ๊ธฐ ์ด๋ ต๋ค. writeField(name)๊ณผ writeField(outputStream, name) ๋ ๋ค ์ฝ๊ฒ ์ฝํ๊ธฐ๋ ํ์ง๋ง ์ ์๊ฐ ๋ ์ฝ๊ฒ ์ฝํ๊ณ ๋ ๋นจ๋ฆฌ ์ดํด๊ฐ ๋๋ค.
๋ฌผ๋ก ์ดํญ ํจ์๊ฐ ๋ ์ ์ ํ ๊ฒฝ์ฐ๋ ์๋ค. Point p = new Point(0,0); ์ด ์ข์ ์์ด๋ค.
์ดํญ ํจ์๊ฐ ๋ฌด์กฐ๊ฑด ๋์๋ค๋ ์๋ฆฌ๋ ์๋๋ค. ํ๋ก๊ทธ๋จ์ ์ง๋ค๋ณด๋ฉด ๋ถ๊ฐํผํ ๊ฒฝ์ฐ๋ ์๊ธด๋ค. ํ์ง๋ง ๊ทธ๋งํผ ์ํ์ด ๋ฐ๋ฅธ๋ค๋ ์ฌ์ค์ ์ดํดํ๊ณ ๊ฐ๋ฅํ๋ฉด ๋จํญ ํจ์๋ก ๋ฐ๊พธ๋๋ก ์ ์จ์ผ ํ๋ค. ์๋ฅผ ๋ค์ด writeField ๋ฉ์๋๋ฅผ outputStream ํด๋์ค ๊ตฌ์ฑ์์ผ๋ก ๋ง๋ค์ด OutputStream.wirteFiled(name)์ผ๋ก ํธ์ถํ๋ค. ์๋๋ฉด outputStream์ ํ์ฌ ํด๋์ค ๊ตฌ์ฑ์ ๋ณ์๋ก ๋ง๋ค์ด ์ธ์๋ก ๋๊ธฐ์ง ์๋๋ค. ์๋๋ฉด FieldWriter๋ผ๋ ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ตฌ์ฑ์์์ outputStream์ ๋ฐ๊ณ write ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ค.
์ผํญ ํจ์
์ธ์๊ฐ 3๊ฐ์ธ ํจ์๋ ์ธ์๊ฐ 2๊ฐ์ธ ํจ์๋ณด๋ค ํจ์ฌ ๋ ์ดํดํ๊ธฐ ์ด๋ ต๋ค. ์์, ์ฃผ์ถค, ๋ฌด์๋ก ์ผ๊ธฐ๋๋ ๋ฌธ์ ๊ฐ ๋ ๋ฐฐ ์ด์ ๋์ด๋๋ค. ๊ทธ๋์ ์ผํญ ํจ์๋ฅผ ๋ง๋ค ๋๋ ์ ์คํ ๊ณ ๋ คํ๋ผ ๊ถ๊ณ ํ๋ค.
์ธ์ ๊ฐ์ฒด
์ธ์๊ฐ 2~3๊ฐ ํ์ํ๋ค๋ฉด ์ผ๋ถ๋ก ๋ ์์ ์ธ ํด๋์ค ๋ณ์๋ก ์ ์ธํ ๊ฐ๋ฅ์ฑ์ ์ง์ด๋ณธ๋ค.
Circle makeCircle(double x, double y, double radius);
-> Circle makeCircle(Point center, double radius);
๋์ฌ์ ํค์๋
ํจ์์ ์๋๋ ์ธ์์ ์์์ ์๋๋ฅผ ์ ๋๋ก ํํํ๋ ค๋ฉด ์ข์ ํจ์ ์ด๋ฆ์ด ํ์๋ค.
๋จํญ ํจ์๋ ํจ์์ ์ธ์๊ฐ ๋์ฌ/๋ช ์ฌ ์์ ์ด๋ค์ผ ํ๋ค. ์๋ฅผ ๋ค์ด writeField(name)๋ name์ด Field๋ผ๋ ์ฌ์ค์ด ๋ถ๋ช ํ ๋๋ฌ๋๋ค.
๋ง์ง๋ง ์์ ๋ ํจ์ ์ด๋ฆ์ ํค์๋๋ฅผ ์ถ๊ฐํ๋ ํ์์ด๋ค. ์ฆ, ํจ์ ์ด๋ฆ์ ์ธ์ ์ด๋ฆ์ ๋ฃ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด assertEquals๋ณด๋ค assertExpectedEqualsAcutal(expected, actual)์ด ๋ ์ข๋ค. ๊ทธ๋ ๋ค๋ฉด ์ธ์ ์์๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์์ด์ง๋ค.
๐ฉ๐ป ์์ ์ ๋ค๋ฅธ ๋ถ์ด ๋งค๊ฐ๋ณ์ ๋๋ฌด ๋ง์ด ๋ง๋ค์ง๋ง๋ผ๊ณ ํ๋ ๊ฑธ ๋ค์ ์ ์ด ์๋๋ฐ ์ด ๋ด์ฉ์ ๋ณด๊ณ ๋ฐ๋ก ๋ ์ฌ๋๋ค...!
๊ทธ๋์ ์์ฆ์ ์ต๋ํ ์ค์ฌ์ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ธ์๊ฐ 0๊ฐ ?!! ์ด๊ฑฐ ์ด๋ป๊ฒ ํด์ผ ํ๋..! ๋ถ๊ฐํผํ๋ค๋ฉด 1๊ฐ๋ผ๋....
์คํ๋ง์์ ์ด๊ฑฐ ๊ฐ๋ฅํ๊ฐ์... ? ๊ถ๊ธํ๋ค... ์ด๋ฐ ์์๋ฅผ ํ๋ฒ๋ ๋ชป๋ด์... ์๋ฌดํผ... ์ค์ผ ์ ์๋ค๋ฉด ์ค์ฌ๋ณด๊ธฐ๋ก ํ๊ณ ,,, ๋น์ฅ ํ๋๊ทธ ํจ์๋ ์์ ๋๋ก ํ์.
๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค์ง ๋ง๋ผ! p.54
๋ถ์ ํจ๊ณผ๋ ๊ฑฐ์ง๋ง์ด๋ค. ํจ์์์ ํ ๊ฐ์ง๋ฅผ ํ๊ฒ ๋ค๊ณ ์ฝ์ํ๊ณ ์ ๋จ๋ชฐ๋ ๋ค๋ฅธ ์ง๋ ํ๋๊น. ๋๋ก๋ ์์์น ๋ชปํ๊ฒ ํด๋์ค ๋ณ์๋ฅผ ์์ ํ๋ค. ๋๋ก๋ ํจ์๋ก ๋์ด์จ ์ธ์๋ ์์คํ ์ ์ญ ๋ณ์๋ฅผ ์์ ํ๋ค. ์ด๋์ชฝ์ด๋ ๊ตํํ๊ณ ํด๋ก์ด ๊ฑฐ์ง๋ง์ด๋ค.
๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํ๋ผ ! p.56
ํจ์๋ ๋ญ๊ฐ๋ฅผ ์ํํ๊ฑฐ๋ ๋ญ๊ฐ์ ๋ต์ ํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ ํ๋ค. ๋ ๋ค ํ๋ฉด ์๋๋ค.
๊ฐ์ฒด ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋๋ฉด ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ ์ค ํ๋๋ค. ๋๋ค ํ๋ฉด ํผ๋์ ์ค๋ค.
public boolean set(String attribute, String value);
-> ์ด ํจ์๋ ์ด๋ฆ์ด attribute์ธ ์์ฑ ๊ฐ์ ์ฐพ์ value๋ก ๊ฐ์ ์ค์ ํ ํ ์ฑ๊ณตํ๋ฉด true๋ฅผ ๋ฐํํ๊ณ ์คํจํ๋ฉด false๋ก ๋ฐํํ๋ค.
if (set ("username", "unclebbb")) ..
-> ๋ ์ ์ ์ฅ์์ ์ด ์ฝ๋๋ฅผ ๋ณด๋ฉด "username"์ด "unclebbb"๋ก ์ค์ ๋์ด ์๋์ง ํ์ธํ๋ ์ฝ๋์ธ์ง ์๋๋ฉด "username"์ "uncelbbb"๋ก ์ค์ ํ๋ ์ฝ๋์ธ์ง ์๋ฏธ๊ฐ ๋ชจํธํด ํท๊ฐ๋ฆฐ๋ค.
"set" ์ด๋ผ๋ ๋จ์ด๊ฐ ๋์ฌ์ธ์ง ํ์ฉ์ฌ์ธ์ง ๋ถ๊ฐํ๊ธฐ ์ด๋ ค์ด ํ์ด๋ค.
ํจ์๋ฅผ ๊ตฌํํ ๊ฐ๋ฐ์๋ ๋์ฌ๋ก ์๋ํ์ง๋ง if๋ฌธ์ ๋ฃ๊ณ ๋๋ ํ์ฉ์ฌ๋ก ๋๊ปด์ง๋ค.
๋ฐ๋ผ์ ์ง์ง ํด๊ฒฐ์ฑ ์
if(attributeExists("username")) {
setAttribute("username", "unclebob");
...
} ์ด์ฒ๋ผ ๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํด ํผ๋์ ์ ์ด์ ๋ฟ๋ฆฌ ๋ฝ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ ! p.57
try {
deletePage(page);
registry.deleteReference(page.name);
configKey.deleteKey(page.name.makeKey());
} catch(Exception e) {
logger.log(e.getMessage);
}
-> ์ฌ๊ธฐ์ try/Catch ๋ธ๋ก ๋ฝ์๋ด์.
try/catch ๋ธ๋ก์ ์๋ ์ถํ๋ค. ์ฝ๋ ๊ตฌ์กฐ์ ํผ๋์ ์ผ์ผํค๋ฉฐ ์ ์ ๋์๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ ๋์์ ๋ค์๋๋ค.
try/catch ๋ธ๋ก๋ ๋ณ๋ ํจ์๋ก ๋ฝ์๋ด๋ ํธ์ด ์ข๋ค.
public void delete(Page page) {
try {
deletePageAndAllReference(page);
} catch(Exception e)
logError(e);
}
public void deletePageAndAllReferences(Page page) throws Exception {
///
}
public void logError(Exception e) {
logger.log(e.getMessage());
}
-> delete ๋ฉ์๋๊ฐ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋์ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ ๊ฐ์ง ์์ ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ ์ค๋ฅ๋ง ์ฒ๋ฆฌํด์ผ ๋ง๋ ํ๋ค. ํจ์์ ํค์๋๊ฐ try๊ฐ ์๋ค๋ฉด ํจ์๋ try ๋ฌธ์ผ๋ก ์์ํด์ catch/finally๋ฌธ์ผ๋ก ๋๋์ผ ํ๋ค.
๋ฐ๋ณตํ์ง ๋ง๋ผ! p.60
์ค๋ณต์ ๋ฌธ์ ๋ค. ์ฝ๋ ๊ธธ์ด๊ฐ ๋์ด๋ ๋ฟ ์๋๋ผ ์๊ณ ๋ฆฌ์ฆ์ด ๋ณํ๋ฉด ๋ค ๊ณณ์ด๋ ์๋ด์ผ ํ๋๊น..!! ๊ฒ๋ค๊ฐ ์ด๋ ํ ๊ณณ์ด๋ผ๋ ๋น ๋จ๋ฆฌ๋ ๋ฐ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ๋ 4๋ฐฐ๋ ๋๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋๋ฅผ ๋ถ๋ชจ ํด๋์ค๋ก ๋ชฐ์ ์ค๋ณต์ ์์ค๋ค.
ํจ์๋ฅผ ์ด๋ป๊ฒ ์ง์ฃ ? p.61
์ํํธ์จ์ด๋ฅผ ์ง๋ ํ์๋ ์ฌ๋ ๊ธ์ง๊ธฐ์ ๋น์ทํ๋ค. ๋ ผ๋ฌธ์ด๋ ๊ธฐ์ฌ๋ฅผ ์์ฑํ ๋๋ ๋จผ์ ์๊ฐ์ ๊ธฐ๋กํ ํ ์ฝ๊ธฐ ์ข๊ฒ ๋ค๋ฌ๋๋ค. ์ด์์ ๋๊ฐ ์ํฌ๋ฅด๊ณ ์ด์์ ํ๋ฏ๋ก ์ํ๋ ๋๋ก ์ฝํ ๋๊น์ง ๋ง์ ๋ค๋ฌ๊ณ ๋ฌธ์ฅ์ ๊ณ ์น๊ณ ๋ฌธ๋จ์ ์ ๋ฆฌํ๋ค.
ํจ์๋ฅผ ์งค ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ฒ์์๋ ๊ธธ๊ณ ๋ณต์กํ๋ค. ๋ค์ฌ์ฐ๊ธฐ ๋จ๊ณ๋ ๋ง๊ณ ์ค๋ณต๋ ๋ฃจํ๋ ๋ง๋ค. ์ธ์ ๋ชฉ๋ก๋ ์์ฃผ ๊ธธ๋ค. ์ด๋ฆ์ด ์ฆํฅ์ ์ด๊ณ ์ฝ๋๋ ์ค๋ณต๋๋ค. ํ์ง๋ง ๊ทธ ์ํฌ๋ฅธ ์ฝ๋๋ฅผ ๋น ์ง์์ด ํ ์คํธํ๋ ๋จ์ ํ ์คํธ ์ผ์ด์ค๋ ๋ง๋ ๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ฅผ ๋ค๋ฌ๊ณ , ํจ์๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฆ์ ๋ฐ๊พธ๊ณ , ์ค๋ณต์ ์ ๊ฑฐํ๋ค. ๋ฉ์๋๋ฅผ ์ค์ด๊ณ ์์๋ฅผ ๋ฐ๊พผ๋ค. ๋๋ก๋ ์ ์ฒด ํด๋์ค๋ฅผ ์ชผ๊ฐ๊ธฐ๋ ํ๋ค. ์์ค์๋ ์ฝ๋๋ ํญ์ ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค.
๐ฉ๐ป 3์ฅ ํจ์๋ฅผ ์ฝ๊ณ ๋๊ฒ ๋๋ ์ ์ ๋๊ฒ ๋ง๋งํ๋ค.. ์๋๋ฐ ์๋ํ๋ฉด ๋ด๊ฐ ์ง ๊ฑฐ ๋ค ์์ ํด์ผ ํ๋ ์์ค์ผ ๊ฒ ๊ฐ์์....
ํ์ง๋ง ์ฒ์๋ถํฐ ๋๊ฐ ๋ค ์ ์ง๊ฒ ๋๊ฐ!!!! ๋๋ ์ง๊ธ ์ฒซ ๋จ๊ณ๋ก ์ฒ์์๋ ๊ธธ๊ณ ๋ณต์กํ๊ฒ ์ง ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ณ ์ด์ , ์ฝ๋๋ฅผ ๋ค๋ฌ๋ ๋จ๊ณ๋ผ๊ณ ์๊ฐํ์. ํจ์๋ก ์ชผ๊ฐ๊ณ , ์ด๋ฆ์ ๋ณ๊ฒฝํด์ฃผ๊ณ , ์ค๋ณต์ ์ ๊ฑฐํ์!! ๊ทธ๋ฆฌ๊ณ ๋ฉ์๋๋ฅผ ์ค์ด๊ณ ์์๋ฅผ ๋ฐ๊พธ์!!
์ด๋ฐ์์ผ๋ก ํด ๋์๊ฐ๋ฉด ๋ ๊ฒ์ด๋ค... !!!
'๊ธฐ์ ์์ > Clean Code' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Clean Code] 2. ์๋ฏธ ์๋ ์ด๋ฆ (0) | 2023.09.25 |
---|---|
[Clean Code] 1. ๊นจ๋ํ ์ฝ๋ (0) | 2023.09.25 |
[Clean Code] 0. ์ด ์ฑ ์ ๊ณต๋ถํ๋ ์ด์ (0) | 2023.09.25 |