You can do it, but it means you don't have to
Last updated
Last updated
page. 188
๋์ ์ธ ํ๊ฒฝ์์ ์ฝ๊ฒ ์ ํ ์ ์๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ผ๋ก Ruby
์์ ๋ง์ด ์ฐจ์ฉ๋์ด ์ฐ์ฌ์๋ค. ํ์ง๋ง ์ด๋ฐ ๋ฐฉ์์ ๊ธฐ์กด ์์ค์ฝ๋์ ์คํ ๋์์ ๋ง์น ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์์ ํ๋ ํธ์ด๋, Ruby on Rails
ํ๋ ์์ํฌ ๋ด๋ถ ์ฝ๋๋ ๋๊ฐ ๋ง์ ๋์๋ค์ด MonkeyPatch
ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๊ต์ฒดํ์ง ๋ชปํ๋ ํ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Why do not use?
MonkeyPatch
์ ์คํ ๋์์ ์ดํด ๋ณด์๋ฉด ์๋ ์์์ ๊ฐ๋ค.
์ฌ๊ธฐ๊น์ง ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๊ธฐ ๋๋ฌธ์ ์ ์๋ํ๋ ์ฝ๋๊ฐ ์์๊ณ , ๊ทธ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ค๋ ๋ณ๊ฒฝ ๋์๋ค. ๊ทธ๋ฌํ ์๊ตฌ์ฌํญ์ ์์ค์ฝ๋์ ๋ณ๊ฒฝ ์์ด ๋์์ ์ ์ง ์ํค๋ ค๋ฉด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐ ํ๊ณ ์๋ ํจ์๋ฅผ ์ํ๋ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ๋ฎ์ด์์ฐ๋ ํํ๋ก ๊ณ ์น ์ ์๋ค. ์ด ๊ฒ์ด MonkeyPatch
๋ก ๋ถ๋ฆฌ์ฐ๋๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ๋ ์ค์ ์ ๋์ํ๋ ๋ค๋ฅธ ์ฝ๋๋ ์ํฅ์ ๋ฐ์ ์ ์์ผ๋ฉฐ, ํ์ธ์ด ํด๋น ์ฝ๋๋ฅผ ์ฝ์ ๋ ๋์์ ์ ์ถํ๊ธฐ ์ด๋ ต๋ค ๋ ๋จ์ ์ด ๋ถ๋ช
ํ๊ฒ ์กด์ฌ ํ๊ธฐ์ ์ฌ์ฉ ํ์ง ๋ง์์ผํ๋ค.
์์์ ์ ์ ๋์ ํ๋ ์ฝ๋๋ก ๊ตฌํ ๋์์ง๋ง ์ค์ ์ด์ ๊ฐ์ด ์๋ฌ๊ฐ ๋๋ ์ํฉ์ ๋ณด๋ฉด, ํํ ์ฌ์ฉ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ MonkeyPatch
๋ก ์ค๋ฒ๋ผ์ด๋ฉ ํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ์กฐ์ฐจ ์ํฅ์ ๋ฐ๋ ์ํฉ์ ๋ง๋ค์ด๋ผ ์ ์๋ ์ ์ด ์๋ค.
What's the conclusion
MonkeyPatch
๋ฅผ ํผํด์ผ ํ๋ ์ด์ ๋ฅผ ์ดํด ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ค์ ์ฝ๋์์ ๊ณผ์ฐ ๋๊ฐ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฆ์ ๊ทธ๋๋ก ์ฃผ์
ํ์ฌ ์คํ ๋์์ ๋ณ๊ฒฝ ์ํฌ ๊ฒ์ธ๊ฐ? ์ด๋ ๊ฒ ์ธ์์ ์ธ ์ํฉ์ ์์๋ก ๋ค์์ง๋ง MonkeyPatch
๋ฅผ ํผํ๊ณ ์๋ก์ด ํจ์๋ฅผ ์ ์ ํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.