- ๊ฐ๋ฐฉ ํ์ ์์น
- ์ํํธ์จ์ด ์์๋ ํ์ฅ์ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผํ๋ค.
- ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์, ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ด์ผํ๋ค.
- ์ด๋ ค์๋ค๋ ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๊ณ ๋ซํ์๋ค๋ ๊ฒ์ ๊ธฐ๋ฅ์ถ๊ฐ๋ฅผ ํ ๋ ๊ทธ ๋ชจ๋์ ์ฐ๊ณ ์๋ ์ฝ๋๋ค์ ์ค์ง์ด ์์ ํ์ง ์์์ผํ๋ค๋ ๊ฒ
- ๋คํ์ฑ์ ํ์ฉํ์
- ํ์ฅ์ ๋ํด์๋ ๊ฐ๋ฐฉ์ ์ด๊ณ ์์ ์ ๋ํด์๋ ํ์์ ์ด์ด์ผํ๋ค.
- ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์๋ก์ด ํด๋์ค๋ฅผ ํ๋ ๋ง๋ค์ด์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํ
- ์ด๋ค ํ์
์ ๋ํ ๋ฐ๋ณต์ ์ธ ๋ถ๊ธฐ๋ฌธ
- ํ๋์ enum์ ๋ํด ์ฌ๋ฌ๊ตฐ๋ฐ์์ ๋ฐ๋ณต์ ์ผ๋ก if/switch๋ฌธ์ ์ฐ๊ณ ์๋ค๋ฉด ๋ค์ ์๊ฐํด๋ณด์์ผํ๋ค.
- ๊ธฐ๋ฅ์ถ๊ฐ๋ case๋ฅผ ํ์ค ์ถ๊ฐํ๋๊ฒ ๋งํผ์ด๋ ์ฌ์ธ ์ ์์ง๋ง ๊ทธ๋ฌ๋ฉด enum์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ์ ์์ ํด์ฃผ์ด์ผํ๋ค.
- ํ๋์ enum์ ๋ํด ์ฌ๋ฌ๊ตฐ๋ฐ์์ ๋ฐ๋ณต์ ์ผ๋ก if/switch๋ฌธ์ ์ฐ๊ณ ์๋ค๋ฉด ๋ค์ ์๊ฐํด๋ณด์์ผํ๋ค.
- OCP๋ if/switch๋ฅผ ์ต๋ํ ์์ฐ๋ ๊ฒ์ผ๋ก ์ฐ์ตํ ์ ์์ต๋๋ค.
- ์์ ์ฌ์ฉํ์ง ๋ง๋ผ๋ ๊ฒ์ ์๋๊ณ enum ๊ฐ์ ํ์ ์ ๋ถ๊ธฐํ๋ ์ง์ ์ ๋ํด์
- ๋ถ๊ธฐ๋ฌธ์ ์์ ๋ ๊ฒ๋ง์ผ๋ก๋ ํจ์์ ํด๋์ค์ ๊ธธ์ด๋ฅผ ์ค์ฌ์ SRP๋ ์ค์ํ ์ ์์ต๋๋ค.
- Protocol ์ฌ์ฉํด์ ์์ ๋ฐ๊ธฐ
- ๋์
๋๋ฆฌ ์ฌ์ฉํ๊ธฐ // OCP๋ฅผ ์งํค๋ ์์น์ ์๋
- ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์
- ๊ตฌํ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋ ๋ณ๊ฒฝ์ ํด์ผํ๋ค.
- ๋ถ๋ช ๋คํ์ฑ์ ์ฌ์ฉํ๊ณ ์์ง๋ง OCP ์์น์ผ ์งํฌ ์ ์๋ค.
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ด ๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๋ณ๋์ ์กฐ๋ฆฝ, ์ค์ ์๊ฐ ํ์ํ๋ค.