ํด๋น ๊ธ์ Robert C.Martin ํด๋ฆฐ ์ฝ๋ ๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ ์์ ํ์ธํด์ฃผ์ธ์.
ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ (Uncle Bob)
- ์ํค๋ถ์ค
- ์ง์์ด: Robert C.Martin (Uncle Bob)
- ์ฎ๊ธด์ด: ๋ฐ์ฌํธ, ์ดํด์
์ด๋ฒ ์ฅ์์ ์ด์ผ๊ธฐํ๊ณ ์ ํ๋ ๊ฒ
- ๋ด๊ฐ ์ง ์ฝ๋๋ฅผ ๋ ์๋ค์ด ์ฝ์์ ๋ ์ฝ๋๊ฐ ๊น๋ํ๊ณ , ์ผ๊ด์ ์ด๋ฉฐ, ๊ผผ๊ผผํ๋ค๊ณ ๊ฐํํ๋ฉด ์ข๊ฒ ๋ค. ์ ๋ฌธ๊ฐ๊ฐ ์งฐ๋ค๋ ์ธ์์ ์ฌ์ด์ฃผ๋ฉด ์ข๊ฒ ๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ผ๋ฉด ํ์์ ๊น๋ํ๊ฒ ๋ง์ถฐ ์ฝ๋๋ฅผ ์ง์ผ ํ๋ค
์ฝ๋์ ํ์์ด ์ค์ํ ์ด์
- ์ฐ๋ฆฌ์ ์์ค์ฝ๋๋ ์ธ์ ๊ฐ ๋ณํ๋ค. ๋ณํ๋ ์ํฉ์ ์์ด ์ผ๊ด๋ ์ฝ๋๋ฅผ ์ ์งํ๊ธฐ ์ํด์๋ ์ ์ ๋ฆฝ๋ ์ฝ๋์ ํ์๊ณผ ๊ท์น์ด ํ์ํ๋ค.
์ ๋ฆฌ
- ์ ์ ํ ํ ๊ธธ์ด๋ฅผ ์ ์งํ๋ผ, ์ธ๋ก ํ์ ๋ง์ถ๊ธฐ
- ๊ฐ๋
์ ๋น ํ์ผ๋ก ๋ถ๋ฆฌํ๋ผ
- ํ์ ๋ฌถ์์ ๊ฐ๋ ์ ์ผ๋ก ๋์ผํ ๋ถ๋ถ์ด๋ผ ํด์๋๋ค
- ๋ณ์๋ ์ฌ์ฉํ๋ ์์น์ ์ต๋ํ ๊ฐ๊น์ด ์ ์ธํ๋ผ
- ํ์ง๋ง ์ธ์คํด์ค ๋ณ์๋ ํด๋์ค ๋งจ ์ฒ์์ ์ ์ธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค
- ์ข
์ ํจ์
- ํ ํจ์๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ค๋ฉด ๋ ํจ์๋ ์ธ๋ก๋ก ๊ฐ๊น์ด ๋ฐฐ์นํ๋ค
- ๊ฐ๋ฅํ๋ค๋ฉด ํธ์ถํ๋ ํจ์๋ฅผ ํธ์ถ๋๋ ํจ์๋ณด๋ค ๋จผ์ ์์ฑํ๋ค.
- ๊ฐ๋
์ ๋น ํ์ผ๋ก ๋ถ๋ฆฌํ๋ผ
public class CleanCode {
private String bookname; // ์ธ์คํด์ค ๋ณ์๋ ํด๋์ค ๋งจ ์ฒ์์
private Integer price;
/**
* ๊ฐ๋
์ ๋ฌถ์์ ํ์ผ๋ก ๊ตฌ๋ถ
*/
public void greet() {
String info = toString(); // ๋ณ์ ์ ์ธ์ ์ฌ์ฉํ๋ ์์น์ ์ต๋ํ ๊ฐ๊น์ด
System.out.println(info);
}
private String toString() { // ํธ์ถ๋๋ (Callee) ํจ์๋ ์๋๋ก
return bookname + " " + price;
}
}
- ๊ฐ๋ก ํ์ ๋ง์ถ๊ธฐ
- ๊ฐ๋ก์ ๊ธธ์ด๋?
- Uncle Bob ๊ธฐ์ค์์๋ 100์๋ 120์๋ฅผ ์ถ์ฒํจ
- ์ ๋งํ๋ฉด IntelliJ ์์ ์ง์ ํ ์ด์ ๊ธธ์ด๋ฅผ ๋์ง ์๋ ๊ฒ์ด ์ข์๊ฒ ๊ฐ์
- ๊ฐ๋ก ๊ณต๋ฐฑ๊ณผ ๋ฐ์ง๋
- ๊ฐ๋ก ๊ณต๋ฐฑ : ๊ณต๋ฐฑ์ ํตํด์ ๋ฐ์ ํ ๊ฐ๋ ๊ณผ ๋์จํ ๊ฐ๋ ์ ํํํจ
- ๋ฐ์ง๋
- ๊ฐ๋ก์ ๊ธธ์ด๋?
public void measureLine(String line) {
int lineSize = line.length(); // ๊ณต๋ฐฑ์ ์ด์ฉํด์ ๋์จํ ๊ฐ๋
์ ํํ
formatter.format(line, lineSize); // ๊ณต๋ฐฑ์ ์์ฐ์ผ๋ก ๋ฐ์ง๋ ๊ฐ๋
์ ํํ (ํจ์์ ์ธ์ ์ฌ์ด๋ ๋ฐ์ ํ๋ฏ๋ก)
}
- ํ์ ๊ท์น
- ํ์ ๊ท์น์ด ๊ณง ๋์ ๊ท์น์ด๋ค.
- ํ์ ํ ๊ฐ์ง์ ๊ท์น์ ํฉ์ํด์ผ์ง ์ผ๊ด์ ์ธ ์คํ์ผ์ ์ฝ๋๊ฐ ์์ฐ๋จ
๋์ ํด์๊ณผ ํ๊ณ
์ด๋ฒ ์ฅ์์ ๋งํ๋ ๋ด์ฉ์ ์ผ๊ด๋ ํ์์ ์ํ ์ฝ๋ ์์ฑ๋ฒ์ด๋ค.
์ด๋ฅผ ์ํด์๋ ํ์์ด๋ผ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋ผ ํํํ๊ณ ์๋ค.
์ด๋ฒ ์ฅ์์ ์ด์ผ๊ธฐํ๋ ๋ด์ฉ๋ค์ ๋คํํ? ๋ด๊ฐ ์ด๋์ ๋ ์ดํดํด์๊ณ ์ค์ ๋ก ์งํค๋ ค๋ ๊ท์น๋ค์ด์๋๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ๊ทธ๋ผ์๋ ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ฌธ์ ๋ฐ๋ก ์ ์ ํ ํ์ ๊ธธ์ด ์ ์ง์ด๋ค.
์ ์ ํ ํ์ ๊ธธ์ด๊ฐ ์ ์ง๋๊ธฐ ์ํด์๋ ๋ค์ ๋์๊ฐ์ ํ ๊ฐ์ง๋ง ์ ๋๋ก ํ๋ค๋ผ๋ ๊ท์น์ผ๋ฅด ์ ์ง์ผ์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
์๋ฌด๋ฆฌ ํ์ ๊ธธ์ด๋ฅผ ์์ ๋ฐฉ๋ฒ๋ค์ ํตํด์ ์งง๊ฒ ์ ์งํ๋ค๊ณ ํด๋ ํ ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ๋ค๋ฉด ๊ธด ๊ธธ์ด์ ํ์ด ๋์ฌ์ ๋ฐ์ ์๋ค๊ณ ์๊ฐํ๋ค.
์ค๋๋ ๋ค์ ํ ๋ฒ ์๊ฐํด๋ณธ๋ค
๋๊ธ