5์ฅ. ํ์ ๋ง์ถ๊ธฐ
๐งพ ํ์์ ์์ฌ์ํต์ด๋ค
ํด๋ฆฐ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ํด์ ์ฝ๋์ ๋ด์ฉ๋ฟ๋ง ์๋๋ผ ํ์๋ ์ค์ํ๋ค.
ํ์์ ์ ๋ง์ถ๋ฉด ์ฝ๋๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ฝํ๊ณ , ์ดํด๋๋ ๋์์ง๋ค.
์ค์ ๋ก ์ ์๋ ์ด๋ ๊ฒ ๋งํ๋ค:
“ํ์์ ๋ง์ถ์ง ์์ผ๋ฉด, ๋ง์น ์ ์ทจํ ๋ฑ์ฌ๋์ด ์ง ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.”
์ฝ๊ธฐ ์ข์ ์ฝ๋๋ ๊น๋ํ๊ณ , ์ง์ ์๊ณ , ์ ๋ฌธ์ ์ผ๋ก ๋ณด์ธ๋ค.
์ด์ ๋ถํฐ๋ ์ ๋ขฐ๊ฐ์ ์ฃผ๋ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ํด, ํ์์ ๋ํด์๋ ํจ๊ป ๊ณต๋ถํด๋ณด์.
๐ฐ ์ ๋ฌธ์ฒ๋ผ ์์ฑํ๋ผ
์ข์ ์ ๋ฌธ ๊ธฐ์ฌ๋ ํญ์ ์ ๋ชฉ → ์์ฝ → ์ธ๋ถ์ฌํญ ์์ผ๋ก ํ๋ฅธ๋ค.
์ฝ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
- ํ์ผ ์๋จ์๋ ๊ณ ์์ค ํจ์
- ์๋๋ก ๋ด๋ ค๊ฐ์๋ก ๊ตฌ์ฒด์ ์ธ ๊ตฌํ
- ์ฝ๋ ์ฌ๋์ ์์์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ด๋ ค์ค๋ฉฐ ๋งฅ๋ฝ์ ํ์ ํ๊ฒ ๋๋ค
์ด๋ฐ ํ๋ฆ์ด ์กํ ์ฝ๋๋ ์ฝ๋ ์ฌ๋์๊ฒ "์ด๊ฑด ์ ์ง์ฌ ์๊ฒ ๊ตฌ๋"๋ผ๋ ์ธ์์ ์ค๋ค.
๐ ์ธ๋ก ํ์์ ๊ธฐ๋ณธ
- ๋น ์ค๋ก ๊ฐ๋ ์ ๋๋๊ณ
- ๊ด๋ จ ์๋ ์ฝ๋๋ค์ ๊ฐ๊น์ด ๋ฐฐ์นํ๊ณ
- ํธ์ถํ๋ ํจ์๋ ์์, ํธ์ถ๋๋ ํจ์๋ ์๋์
- ์ค์ํ ๊ฐ๋ ๋ถํฐ ์์ ๋ฐฐ์นํ๊ณ
- ํ์ผ ํฌ๊ธฐ๋ 200์ค~500์ค ์ ๋๊ฐ ์ด์์
๐ฌ ์์ 1: ๋น ์ค์ด ์๋ ์ฝ๋ (๊ฐ๋ ์ฑ ↑)
public class BoldWidget extends ParentWidget {
public static final String REGEXP = "'''.+?'''";
private static final Pattern pattern = Pattern.compile("'''(.+?)'''");
public BoldWidget(ParentWidget parent, String text) throws Exception {
super(parent);
Matcher match = pattern.matcher(text);
match.find();
addChildWidgets(match.group(1));
}
public String render() throws Exception {
return "<b>" + childHtml() + "</b>";
}
}
๐ฌ ์์ 2: ๋น ์ค ์์ด ๋ชฐ๋ ค ์๋ ์ฝ๋ (๊ฐ๋
์ฑ ↓)
public class BoldWidget extends ParentWidget {
public static final String REGEXP = "'''.+?'''";
private static final Pattern pattern = Pattern.compile("'''(.+?)'''");
public BoldWidget(ParentWidget parent, String text) throws Exception {
super(parent);
Matcher match = pattern.matcher(text);
match.find();
addChildWidgets(match.group(1));}
public String render() throws Exception {
return "<b>" + childHtml() + "</b>";}
}
→ ๊ฐ์ ์ฝ๋๋ผ๋ ์ค ํ๋๋ก ๊ฐ๋
์ฑ์ด ์์ ํ ๋ฌ๋ผ์ง๋ค.
๐ ๊ฐ๋ก ํ์๋ ์ค์ํ๋ค
- ํ ๊ธธ์ด๋ 100~120์ ์ ๋๊ฐ ์ด์์
- ํ ๋น๋ฌธ, ์ฐ์ฐ์ ์๋ค๋ก ๊ณต๋ฐฑ์ ํ์ฉํด์ ํ๋ฆ์ ๋๋ ์ค๋ค
- ํจ์์ ๊ดํธ๋ ๋ถ์ด๊ณ , ์ธ์๋ ์ผํ๋ก ๊ณต๋ฐฑ ๋ถ๋ฆฌ
int lineSize = line.length();
totalChars += lineSize;
public static double root(double a, double b, double c) {
return (-b + Math.sqrt(b*b - 4*a*c)) / (2*a);
}
๐ ๋ค์ฌ์ฐ๊ธฐ์ ์ ๋ ฌ
- ๋ค์ฌ์ฐ๊ธฐ๋ ๋ฒ์์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๊ฐ์ ์ฅ์น๋ค
- ํด๋์ค → ๋ฉ์๋ → ๋ธ๋ก ์์ผ๋ก ํ ์์ค์ฉ ๋ค์ฌ์ด๋ค
- ๊ฐ๋ก ์ ๋ ฌ(์: ๋ณ์ ์ ์ธ ์ ๋ ฌ)์ ๊ฐ๋ ์ฑ์ ํด์น๋ ๊ฒฝ์ฐ๋ ๋ง๋ค
// ๋น์ถ์ฒ: ์ ๋ ฌ๋ก ์ธํด ์ค์ํ ์ ๋ณด๊ฐ ํ๋ ค์ง
private InputStream input;
private OutputStream output;
// ์ถ์ฒ: ๋ค์ฌ์ฐ๊ธฐ๋ง์ผ๋ก๋ ์ถฉ๋ถ
private InputStream input;
private OutputStream output;
๐ค ํ ๊ท์น์ด ๊ฐ์ฅ ์ค์ํ๋ค
๊ฐ์ธ ์ทจํฅ๋ณด๋ค ๋ ์ค์ํ ๊ฑด ํ ์ ์ฒด์ ํฉ์๋ค.
์๋ก ๋ค๋ฅธ ์คํ์ผ์ด ์์ด๋ฉด, ์ฝ๋๋ฒ ์ด์ค๋ ๊ธ์ธ ๋ณต์กํ๊ณ ์ด์ง๋ฝ๊ฒ ๋๊ปด์ง๋ค.
๊ทธ๋์ ํ์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ ํ๊ณ , ๋๊ตฌ๋ก ๊ฐ์ ํ๋ฉฐ, ๋ชจ๋๊ฐ ํจ๊ป ์ง์ผ์ผ ํ๋ค.
โ๏ธ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
ํ์์ ๋จ์ํ ๋ณด๊ธฐ ์ข๊ธฐ ์ํ ๊ฒ ์๋๋ค.
์ฝ๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ฝ๊ณ , ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ๋๋ ๋๊ตฌ๋ค.
- ์ ๋ฌธ์ฒ๋ผ ์์์ ์๋๋ก ํ๋ฆ ์๊ฒ ์์ฑํ๊ณ
- ๊ฐ๋ ์ ๋น ์ค๋ก ๋๋ ์ฃผ๊ณ
- ๊ด๋ จ ์๋ ์ฝ๋๋ ๊ฐ๊น์ด ๋๊ณ
- ์ค์ํ ๊ฑด ์์ชฝ์ ๋จผ์ ๋ณด์ฌ์ฃผ๊ณ
- ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค, ๊ฐ์ ๊ท์น์ ๊พธ์คํ ์งํค๋ ๊ฒ
ํ ์ค ํ ์ค์ ๋ค์ด๊ฐ ์์ ๋ฐฐ๋ ค๋ค์ด ๊ฒฐ๊ตญ ํด๋ฆฐ ์ฝ๋์ ์์์ ์ด ๋๋ค๋ ๊ฒ์ ๋ช ์ฌํ์!
'๐ > Clean Code(ํด๋ฆฐ ์ฝ๋)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํด๋ฆฐ์ฝ๋ ์คํฐ๋] 6์ฅ. ๊ฐ์ฒด์ ์๋ฃ ๊ตฌ์กฐ (0) | 2025.05.01 |
|---|---|
| [ํด๋ฆฐ์ฝ๋ ์คํฐ๋] 4์ฅ. ์ฃผ์ (0) | 2025.05.01 |
| [ํด๋ฆฐ์ฝ๋ ์คํฐ๋] 3์ฅ. ํจ์ (0) | 2025.04.30 |
| [ํด๋ฆฐ์ฝ๋ ์คํฐ๋] 1&2์ฅ. ํด๋ฆฐ ์ฝ๋์ ์๋ฏธ ์๋ ์ด๋ฆ (0) | 2025.04.30 |