ํ๋ก๊ทธ๋๋ฐ ์ํฐํจํด (Anti-pattern)
by JiwonDev* ์ด ๊ธ์ ์์ฑ์๊ฐ ์ํฐํจํด์ ์ ํ ๋ ๋ง๋ค ์ถ๊ฐ๋ ์์ ์ ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ์ํฉ์ ๋ฐ๋ผ ์์ฃผ ์ฐ์ด๋ ์ค๊ณ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ '๋์์ธ ํจํด' ์ด๋ผ๋ ๊ฒ ์๋ค.
ํ์ง๋ง ๋ฐ๋๋ก ์์ฃผ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ํจํด์ด์ง๋ง, ์ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ๋ค๋ฉด ์ ๋ง ์ปค๋ค๋ ์ฅ์ ๋ฅผ ๋ง๋ค ์ ์๋ ํจํด๋ ์๋๋ฐ ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ํฐํจํด์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ํฐํจํด์ ์ ๋ง ์ฌ๋ฌ๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ง๋ง, Java์์ ๋ํ์ ์ผ๋ก ๋ง์ด ์ธ๊ธ๋๋ ๋ช๊ฐ์ง๋ฅผ ์๊ฐํ๊ณ ์ ํ๋ค.
# ํ์ค์ง๋ฆฌ ์ํฐํจํด
- if/ for/ while ๋ฌธ์ ํ์ค ์ง๋ฆฌ ๋ธ๋ญ์ ์๋ตํ๋ ๊ฒ์ ์ข์ง ์์ ๋ฐฉ๋ฒ์ด๋ค.
(Java๋ ํ์ด์ฌ์ด ์๋๋ค. ์ด๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ ๋งคํ๊ฒ ๋ง๋ค์ด ๊ฐ๋ ์ฑ๊ณผ ๋๋ฒ๊น ์ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.) - ๋ฐฐ์ด ์ํ์ array.length ๊ฐ์ ์ ๋ณด๋ ๋งค๋ฒ ํธ์ถํ์ง๋ง๊ณ ์บ์ํ๊ณ ์ฌ์ฉํ์.
- if-else๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ๋จํ ๋ก์ง์ ์์ธ๋ก ์ฒ๋ฆฌํ์ง ๋ง์. ์์ธ๋ ์์ฃผ ๋ฐ์ํ๋ฉด ์๋๋ค.
- ์ฑ๊ธํค์ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ ๋ฌด์ํ(Stateless)๋ฅผ ์งํฅํด์ผ ํ๋ค. ์ํ๋ฅผ ๊ฐ์ง๋ฉด ์ฌ๊ฐํ ์ฅ์ ๋ฅผ ๋ง๋ค ์ ์๋ค.
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์์ฑ์์ ์ด๊ธฐํ ์์ ์ ๋ฐ๋ก ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ ์ง๋ณด์์ ์ข๋ค. (์์ฒญ ๊ฐ๋จํ ๊ฒฝ์ฐ๋ ์์ธ)
# ํ๋ฌผ์ญ๋ฐฐ ํ๋ก๊ทธ๋๋ฐ(Cargo cult)
ํ๋ก๊ทธ๋๋ฐ ํจํด์๋ ์ ๋ง ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ํฉํ ๋ฆฌ, ์ ๋ต, ์ฑ๊ธํค...
ํ์ง๋ง ๊ฐ๊ฐ์ ํจํด์ด ์ ํ์ํ๊ณ , ์ด๋ค ๊ฒ์ ์ฃผ์ํด์ผํ๋์ง ๋ชจ๋ฅด๊ณ ๋ฌด์์ ์ญ๋ฐฐํ๋ฏ์ด ํจํด์ ์ฐ๋ ๊ฒ์ ์ข์ง์๋ค๋ ๋ง์ด๋ค. ์๋ฌด๋ฆฌ ๊ฒ์ฆ๋๊ณ ์ข์ ์ค๊ณ๋ผ ํ ์ง๋ผ๋ ๊ทธ๊ฒ์ ๋ด ์ฝ๋์ ์ ์ฉํ๊ธฐ์ํด์๋ ๊ทธ ์ค๊ณ์ ํ์์ฑ๊ณผ ์ดํด๋ ์ ํ์ด ์๋ ํ์์ด๋ค. ๋ง์ฝ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ด ๋ณต์กํ์ง ์๋ค๋ฉด, ๊ตณ์ด ํจํด์ด๋ ๋ฐฉ๋ฒ๋ก ์ ์ ์ฉ์ํค๋ ๊ฑฐ๋ณด๋ค ๊ทธ๋ฅ ์ฝ๋๋ฅผ ๋ง๋๋๊ฒ ๋ ๊น๋ํ๊ณ ์ฑ๋ฅ์ด ์ข์ ์๋ ์๋ค.
- ๊ฒ์ฆ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ฝ๋๋ฅผ ๋ฌด์์ ๋ณต์ฌํด์ฌ ๋
- ๋์์ธ์ด ๋์ค๊ฒ๋ ์ด์ ์ ์์น์ ์ดํดํ์ง ์๊ณ ์ ์ฉํ๋ ค ํ์ ๋
- ์ฝ๋๋ง ๋ด๋ ์ค๋ช ์ด ํ์คํ๋ฐ ๊ตณ์ด ๊ฑฐ์ฐฝํ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ
- GC์ ์ํด ์๋์ผ๋ก ์ ๊ฑฐ๋๋ ๊ฐ์ฒด๋ฅผ ๊ตณ์ด ์ญ์ ๋ฉ์๋๋ฅผ ํตํด ์ญ์ ํ ๋
# ๊ธ๋๊ธ (Gold plating)
๋น์ฆ๋์ค์ ์ธ ๊ฐ์น๋ฅผ ์ฐฝ์ถํ ์ ์๋ ์ผ์ ์์ ์ ๋์ด์๋ ๊ณ์ํด์ ๋ฆฌํฉํ ๋ง, ๊ฐ๋ฐ์ ์งํํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ฌผ๋ก ์ข์ ์ค๊ณ์ ๋ ๋์ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ์ข์ ์ผ์ด์ง๋ง ๊ณ ๊ฐ์ด ์์ฒญํ ์ ๋๋ง ์ฒ๋ฆฌํ๊ณ ๋ค๋ฅธ ์๋น์ค ๊ตฌํ์ ๋จผ์ ํ๋ ๊ฒ์ด ์ฐ์ ์ด๋ค. ํ์ ์ด์์ ๋ฆฌํฉํ ๋ง์ ์ค์งํด์ผํ๋ค.
# ๋งค์ง ๋๋ฒ (Magic Number)
๋ง๋ฒ์ ์ซ์. ์ง์ ์ซ์๊ฐ ์ ๋ ฅ๋ ํ๋์ฝ๋ฉ ๋ ๊ฐ์ด๋ค.
- ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ค๋ช ๋์ง ์์ ์์๋ก ์๋ ๊ฐ (Enum์ด๋ ๋ฉ์๋๋ฅผ ํตํด ์๋ฏธ๋ฅผ ์ ๋ฌ ๋ฐ์์ผ ํ๋ค.)
- ๋ค๋ฅธ ์๋ฏธ๋ก ์ฐฉ๊ฐํ๋ฉด ์๋๋ ๊ฐ์ด, ์ถฉ๋ถํ ์ฐฉ๊ฐํ๊ธฐ ์ข์ ์ํ๋ก ์์ ๋
'๐๊ธฐ๋ณธ ์ง์ > Java ๊ธฐ๋ณธ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์ ์ง๋ ฌํ(Serialization)๋? (0) | 2021.08.04 |
---|---|
์๋ฐ ์ด๋ ธํ ์ด์ (@Annotation) (0) | 2021.08.03 |
StringBuffer์ StringBulider (0) | 2021.07.27 |
์ฐ๋ ๋ ๋๊ธฐํ (sync, volatile, AtomicClass) (0) | 2021.07.27 |
์๋ฐ์ String๊ณผ Constant Pool (2) | 2021.07.27 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev