๋ฐ์ํ
์์ง๋
Cohesion
: ํด๋์ค ๋งค์๋๋ ํด๋์ค ์ธ์คํด์ค ๋ณ์๋ฅผ ํ๋ ์ด์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋๊ฐ ์ ์ญ๋ณ์๋ฅผ ๋ง์ด ์ฌ์ฉํ ์๋ก ํด๋์ค์ ์์ง๋๊ฐ ๋๋ค.
- ๋ชจ๋ ์ ์ญiv๋ฅผ ๋ฉ์๋๋ง๋ค ์ฌ์ฉํ๋ ํด๋์ค๋ ์์ง๋๊ฐ ๊ฐ์ฅ ๋๋ค.
→ ํ์ง๋ง ์ด๋ ๊ฐ๋ฅํ์ง๋ ๋ฐ๋์ง ํ์ง๋ ์๋ค. ๊ทธ๋ ์ง๋ง ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์งํฅํ๋ค.
๋ณ์ ์ฐธ์กฐ ์ค๋ช ๊ธ
์ฑ ์์ ๋งํ๋ ๋ฉ์๋๋ง๋ค ์ฌ์ฉํ๋ ์ธ์คํด์ค ๋ณ์๋
non-static์ด์ global variable(์ ์ญ ๋ณ์)๋ฅผ ๋งํ๋ค.
- 'ํจ์๋ฅผ ์๊ฒ, ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ์งง๊ฒ'๋ผ๋ ์ ๋ต์ ๋ฐ๋ฅด๋ค ๋ณด๋ฉด
๋ช๋ช ๋ฉ์๋๋ง ์ฌ์ฉํ๋ ์ ์ญiv๊ฐ ๋ง์์ง๋ค.
→ ์ด๋ ์๋ก์ด ํด๋์ค๋ฅผ ์ชผ๊ฐ์ผ ํ๋ค๋ ์ ํธ๋ค.
์์ง๋๋ฅผ ์ ์งํ๋ฉด ์์ ํด๋์ค ์ฌ๋ฟ์ด ๋์จ๋ค.
- ํฐ ํจ์๋ฅผ ์์ ํจ์ ์ฌ๋ฟ์ผ๋ก ๋๋๊ธฐ๋ง ํด๋ ํด๋์ค ์๊ฐ ๋ง์์ง๋ค.
์ด๋ ๊ฒ ๋ง๋ค๋ค๋ณด๋ฉด ์ ์ฒด์ ์ธ ์ฝ๋ ์๋ ๊ธธ์ด์ง ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง
์ด๋ ์ข ๋ ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ค.
๋ณ๊ฒฝํ๊ธฐ ์ฌ์ด ํด๋์ค
SQL์ ๊ตฌ์กฐ์ ์ธ ๊ด์ ์์ SRP๋ฅผ ์๋ฐํ๋ค.
class์ sql file์ด ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
→ sql์ ์์ ํ๋ฉด classํ์ผ๋ ์์ ํด์ผ๋ง ํ๋ค.
→ ๋ง์ฝ update๋ฌธ์ ์์ ํ๋๋ฐ ์ค๋ฅ๊ฐ ์๊ธด๋ค๋ฉด select๋ฌธ๋ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฅผ ์ต๋ํ ํด๋ฆฐํ๊ฒ ๊ด๋ฆฌํ๋ ค๋ฉด
ํ์ ํด๋์ค๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด update๋ฌธ์ ์ถ๊ฐํ ๋
UpdateSql extends Sql ํด๋์ค๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
๋ค๋ฅธ create/insert/select ๋ฌธ์ ์ค๋ฅ๊ฐ ์ํฅ์ ๋ฏธ์น ์๊ฒ ๋๋ค.
ํ์ฅ์ ๊ฐ๋ฐ์ ์ด๊ณ ์์ ์ ํ์์ ์ด์ด์ผ ํ๋ค๋OCP Open-Closed Principle ๋ฐฉ์์ด๋ค.
๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ
- ์๊ตฌ์ฌํญ์ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค.
→ ๋ฐ๋ผ์ ์ฝ๋๋ ๋ณํ๊ธฐ ๋ง๋ จ์ด๋ค. - ์์ธํ ๊ตฌํ(ํด๋์ค์ ๋ฉ์๋๊ฐ ํฐ ๊ฒฝ์ฐ)์ ์์กดํ๋ ๊ฒฝ์ฐ๋ ๊ตฌํ์ด ๋ฐ๋๋ฉด ์ํ์ ์ฒํ๋ค.
- class Portfolio์์ TockyoStockExchange API๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
ํด๋์ค์์ ์ง์ ํธ์ถํ๋ ๋์ - interface StockExchange์์ API๋ฅผ ํธ์ถํ์ฌ ์์คํ ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ค.
- ์ด๋ฌํ ๊ตฌ์กฐ๋ class PortfolioTest๋ฅผ ๋ง๋ค์ด ํ ์คํธํ๊ธฐ๋ ์ข๋ค.
- ์ด๋ ๊ฒ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ ๋ค๋ฅธ ํด๋์ค ์ค๊ณ์์น์ธ DIP Dependency Inversion Principle ์์กด์ญ์ ์์น์ ๋ฐ๋ฅด๋ ํด๋์ค๊ฐ ๋์จ๋ค.
- ์ด์ ๊ฐ์ ์ถ์ํ๋ ์ค์ ๋ก ์ฃผ๊ฐ๋ฅผ ์ป์ด์ค๋ ์ถ์ฒ๋ ๋ฐฉ์์ ๋ชจ๋ ์จ๊ธด๋ค.
๋ฐ์ํ
'๐ CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CleanCode]์์คํ 2 (2) | 2024.10.10 |
---|---|
[CleanCode]์์คํ 1 (0) | 2024.10.10 |
[CleanCode]ํด๋์ค 1 (0) | 2024.10.08 |
[CleanCode]๋จ์ ํ ์คํธ (2) | 2024.10.03 |
[CleanCode]๊ฒฝ๊ณ 2 (1) | 2024.10.01 |