๋ฐ์ํ
๋๋ฏธํฐ ๋ฒ์น
Law of Demeter
: ๋ชจ๋์ ์์ ์ด ์กฐ์ํ๋ ๊ฐ์ฒด์ ์์ฌ์ ์ ๋ชฐ๋ผ์ผ ํ๋ค.
- ๊ฐ์ฒด๋ ์๋ฃ๋ฅผ ์จ๊ธฐ๊ณ ํจ์๋ฅผ ๊ณต๊ฐํ๋ค.
- ์ฆ, ๊ฐ์ฒด๋ ์กฐํํจ์๋ก ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ณต๊ฐํ๋ฉด ์๋๋ค๋ ์๋ฏธ๋ค.
- ๋ํ์ ์ธ ํด๋ฆฌ์คํฑ์ด๋ค.
ํด๋ฆฌ์คํฑ Heuristic
์๋ฒฝํ์ง ์์ง๋ง, ์ผ๋ฐ๋ฒ์ผ๋ก ์ข์/๊ฐ๋จํ ํด๊ฒฐ๋ฒ์ ๋งํ๋ค.
- ์์ธํ ์์๋ก
ํด๋์ค C์ ๋ฉ์๋ f๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ๋ฉ์๋๋ง ํธ์ถํด์ผ ํ๋ค.- ํด๋์ค C
- f ๊ฐ ์์ฑํ ๊ฐ์ฒด
- f ์ธ์๋ก ๋์ด์จ ๊ฐ์ฒด
- C ์ธ์คํด์ค ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ฒด
- ํ์ง๋ง ์ ๊ฐ์ฒด์์ ํ์ฉ๋ ๋ฉ์๋๊ฐ ๋ฐํํ๋ ๊ฐ์ฒด์ ๋ฉ์๋๋ ํธ์ถํ๋ฉด ์๋๋ค.
๋ณต์กํ ๋ฏ์ด ๋ณด์ด์ง๋ง ๋๋ฏธํฐ ๋ฒ์น์ ์๋ฐํ๋ ์ฌ๋ก๋ง ํผํ๋ฉด ๋๋ค.
ํด๋์ค A→B์์ ์กฐํ๋ฅผ ํ๋ค๋ฉด B์ ์๋ ์๋ฃ๋ง ๊ฐ์ ธ์์ผ์ง
A→B→C์กฐํ๋ฅผ ํ๋ฉด ์๋๋ค๋ ๊ฑฐ๋ค.
ํ๋ง๋๋ก ์ฝ๋๊ฐ ๊ผฌ์ธ ์ํ.
๊ธฐ์ฐจ ์ถฉ๋ Train wreck
์ด ์ฌ๋ก๋ ์๋ฃ๊ตฌ์กฐ๋ ๋ฌด์กฐ๊ฑด ํจ์์์ด ๊ณต๊ฐ ๋ณ์๋ง ํฌํจํ๊ธฐ๋๋ฌธ์ด๊ณ
๊ฐ์ฒด์์๋ ์๋๋ค.
์ก์ข ๊ตฌ์กฐ
์์ ๊ฐ์ด ๋๋ฏธํฐ ๋ฒ์น์ ์๋ฐํ๋ฉด ์ฝ๋๊ฐ ๊ผฌ์ด๋ ํผ๋์ด ์๊ธฐ๋๋ฐ
๊ฐ๋ฐ์๋ ์ด ์ฝ๋๋ฅผ ํ์ฉํ๊ธฐ ์ํด ์ ๋ฐ์ ๊ฐ์ฒด, ์ ๋ฐ์ ์๋ฃ ๊ตฌ์กฐ์ธ ์ก์ข ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ด์ ๊ธ์์ ์ค๋ช ํ๋ ๋ฐ์ ๊ฐ์ด ์๋ก์ด ํจ์/์๋ฃ๊ตฌ์กฐ ๋ชจ๋ ์ถ๊ฐํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ด ๋๋ค.
๊ทธ๋์ ์ ๋ต์
- ๊ฒฐ๊ตญ ๊ฐ์ ธ์ค๋ ค๋ ๊ฒ์ File Path์ด๋ค.
- ์ด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํจ์๋ฅผ ๊ตฌํํ๋ฉด ๋ด๋ถ๊ตฌ์กฐ๋ฅผ ๋ค์ด๋ด์ง ์์ ์ ์๋ค.
- ํจ์๋ฅผ ์๋ก ๋ง๋ค๋ฉด ๋๋ ๊ฒ์ด์ง ์ด๊ฒ ์ ๊ฒ ๋์ด๋ค ์ฐ๋ ์๊ฐ ์ฝ๋๊ฐ ๊ผฌ์ด๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.
์๋ฃ ์ ๋ฌ ๊ฐ์ฒด
์๋ฃ๊ตฌ์กฐ์ฒด์ ์ ํ์ ์ธ ํํ๋ ๊ณต๊ฐ ๋ณ์๋ง ์๊ณ ํจ์๊ฐ ์๋ ํด๋์ค์ด๋ค.
DTO(Data Transfer Object)๋ผ๊ณ ๋ ํ๋ค.
Socket์ด๋ DB์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์ฝ๋์์ ์ฌ์ฉํ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์ฒซ๋ฒ์งธ๋ก ์ฌ์ฉ๋๋ค.
๊ต์ฅํ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
์ข ๋ ์ผ๋ฐ์ ์ธ ํํ๋ก๋ ๋นBean ๊ตฌ์กฐ์ด๋ค.
(์ด์ ์ ๋ง์ด ์ฌ์ฉ๋์๋๋ฐ, ์์ง๋ ํ์ฅ์์ ๋ฆฌํฉํ ๋งํ ๋ AS-IS ์ฝ๋์์ ๋ง์ด ๋ณด์ ๋๋ค)
์ผ์ข ์ ์ฌ์ด๋ฒ ์บก์ํ๋ก ๋ณ๋ค๋ฅธ ์ด์ต์ ์ ๊ณตํ์ง ์๋๋ค.
ํ์ฑ๋ ์ฝ๋
DTO์ ํน์ํ ํํ.
๋น์ฆ๋์ค ๊ท์น ๋ฉ์๋๋ฅผ ์ถ๊ฐํด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ
์ด๋ฐ ๊ฒฝ์ฐ ์ก์ข ๊ตฌ์กฐ๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ถ์ฒํ์ง ์๋๋ค.
๋ฐ์ํ
'๐ CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CleanCode]์ค๋ฅ์ฒ๋ฆฌ-์์ธ์ฌ์ฉ๋ฒ (0) | 2024.09.27 |
---|---|
[CleanCode]์ค๋ฅ์ฒ๋ฆฌ-์ค๋ฅ์ฝ๋๋ณด๋ค ์์ธ(try/catch&throws)๋ฅผ ์ด์ฉํ๋ผ (1) | 2024.09.25 |
[CleanCode]๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ 1 (0) | 2024.09.23 |
[CleanCode]ํ์ ๋ง์ถ๊ธฐ (0) | 2024.09.21 |
[CleanCode]๋์ ์ฃผ์ (0) | 2024.09.20 |