์์ฑ๊ฐ์์
์์ฑ๊ฐ์์, ํ๋กํผํฐ ์ต์ ๋ฒ๋ ๋ณ์์ ๊ฐ์ด ๋ณํจ์ ๊ด์ฐฐํ๋ ๋ฉ์๋์ ๋๋ค.
๋ณ์์ ๊ฐ์ด ๋ณํจ์ ๊ด์ฐฐํ๊ธฐ ๋๋ฌธ์ ๋น์ฐํ var
๋ง ์ ์ธ์ด ๋๊ฒ ์ฃ ?
๊ฐ์ด ๋ณํ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ willSet
๊ณผ ๊ฐ์ด ๋ณํ๋๊ณ ๋ ํ์ ํธ์ถ๋๋ didSet
์ด ์์ต๋๋ค.
didSet
์ oldValue
๊ฐ์ ํธ์ถํ๊ณ , willSet
์ newValue
๊ฐ์ ํธ์ถํด์.
ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์์๋ ์์ฑ๊ฐ์์๋ฅผ ์ฌ์ฉํ ์ ์์๊น์?
์ ์ฅ์์ฑ์์๋ง ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง, ์ฌ์ ์๋ฅผ ๋ถ๊ฐ๋ฅํด์.
์ ๊ณ์ฐ ์์ฑ์ ์๋ ๊น์?
๊ณ์ฐ ์์ฑ์ getter
๋ setter
๋ฅผ ํตํด ๊ฐ์์ ์ญํ ์ ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทผ๋ฐ ๊ณ์ฐ์์ฑ์์๋ ๊ฐ๋ฅํ ๋๊ฐ ์์ฃ . ์์๋ฐ์ ๊ณ์ฐ ์์ฑ์ ์ฌ์ ์ํ์ฌ ํ๋กํผํฐ ์ต์ ๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ ๊ทผ์ ์ด
์ ๊ทผ์ ์ด๋ ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ฝ๋์ ์๋ํ๋ฅผ ํ๊ธฐ ์ํด์ ๊ผญ ํ์ํ ์์ฑ์ ๋๋ค.
์ ๊ทผ์ ์ด๋ฅผ ํ๋ฉด ์ปดํ์ผ๋ฌ์ ์ ์ฅ์์๋ ์ด ๋ณ์๊ฐ ๋๋ ์ด ๋ฉ์๋๊ฐ ์ด๋์๋ถํฐ ์ด๋๊น์ง ์ฌ์ฉ๋๋ ๊ฒ์ธ์ง๋ฅผ ์ธ์งํ ์ ์์ต๋๋ค. ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ ์ ์์ด์ ์์ฃผ ํจ์จ์ ์ด์ฃ .
์ ๊ทผ์ ์ด์๋ฅผ ๋ณด์์ฑ์ด ๋์ ๋จ๊ณ๋ถํฐ ๋์ดํด๋ณด์๋ฉด,
private -> fileprivate -> internal -> public -> open
์ ๋๋ค.
์ ๊ทผ์ ์ด์๋ฅผ ์ฐ์ง ์์ ๊ฒฝ์ฐ์ internal
๋ก ์ด๊ธฐํ๊ฐ ๋์ด internal
๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค๊ณ ๋ณด์๋ฉด ๋ผ์!
public
๊ณผ open
์ ์ฐจ์ด๋ ์์๊ณผ ์ฌ์ ์๊ฐ ๊ฐ๋ฅํ๋ ๋ถ๊ฐ๋ฅํ๋์ ์ฐจ์ด์
๋๋ค.
๋น์ฐํ open
์ด ๋ ๋ณด์์ฑ์ด ๋ฎ๊ธฐ ๋๋ฌธ์ ์์๊ณผ ์ฌ์ ์๊ฐ ๊ฐ๋ฅํ๊ณ public
์ ๋ถ๊ฐ๋ฅ ํ๊ฒ ์ฃ ?
์์๊ณผ ์ฌ์ ์๋ฅผ ํ ์ ์๋ ํ์
์ ํด๋์ค๋ฐ์ ์๊ธฐ ๋๋ฌธ์ open
์ ํด๋์ค์์ ์ฌ์ฉํ๊ณ
๊ตฌ์กฐ์ฒด์ ์ด๊ฑฐํ์ public
๊น์ง๋ง ์ฌ์ฉ์ ํ ์ ์์ต๋๋ค.
์ค๋์ ํด๋ก์ ์ ๋ํด์ ํ์ต์ ์งํํ๋ค๊ฐ
์ง์ง ๋ด๊ฐ ์๋ ๊ฒ์ด ๋ง์๊น?
๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋์์ด์.
ํด๋ก์ ๋ฅผ ํ์ตํ ํ์ ํด๋ก์ ์ ๋ํ ๊ฐ๋ ์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํ๋ ค๊ณ ํ๋๋ฐ,
ํด๋ก์ ๋? ๋ค์ ์ ๊ฐ ์ ์ ์ ์๋ ๋ง์ด ์๊ฐ์ด ๋์ง ์๋๋ผ๊ตฌ์.
๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋ป๊ฒ ์ ์ ๋ด๋ ธ๋ ๊ถ๊ธํด์ ์ฌ๋ฌ ๋ธ๋ก๊ทธ๋ค์ ์ฝ์ด๋ณด์์ต๋๋ค.
๋ค๋ค ์์ ์ ์ธ์ด๋ก ์ ํ์ด์ ์ ์๋๋ฐ ์ง๊ธ ๋ด๊ฐ ๋ชป์ ๊ณ ์๋ ๊ฑฐ๋ฉด ํด๋ก์ ๋ฅผ ๋ชจ๋ฅด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ฒ ๋๋๋ผ๊ตฌ์.
์ง์ง ๋ด๊ฐ ์๋ ๊ฒ์ ๋์ ์ธ์ด๋ก ์ ํ์ด์ ์์๋ฃ๊ธฐ ์ฝ๊ฒ ์ค๋ช ์ ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํด๋ก์ ๋ ๋ฌด์์ผ๊น๋ฅผ ํ์ฐธ ๊ณ ๋ฏผํ๋ค๊ฐ ๊ณต๋ถ๋ฅผ ๋ค์ ํ๊ธฐ๋ก ๋ง์์ ๋จน์์ด์.
๋ธ๋ก๊ทธ๋ฅผ ์ฐ๋ ์๋ฏธ๋ ์ ์๊ฒ๋ ๋ด๊ฐ ์๊ณ ์๋ค๋ ๊ฒ์ ๋ํ ํ์ ์ผ๋ก ์ฐ๋ ๊ฒ ๊ฐ์์.
์ค๋์ ์๋ ์ ๋ค์๋ ๋ถํธ ์บ ํ์ธ ์จ๋ฐ ๋ฌธ๋ฒ ์ค์ฟจ์์
์ทจ์ ํ์ ๋ถ๋ค์ด ์ด๋ค ๊ณต๋ถ๋ฅผ ํ์ตํ์ฌ, ์ด๋ป๊ฒ ์ทจ์ ์ ํ์๋์ง์ ๋ํ ์ทจ์ ์ธ์ ์ด ์์์ต๋๋ค.
๋๊ฒ ๋ค๋ฅธ ์ธ๊ณ์ ์ฌ๋์ธ ๊ฒ ๊ฐ๋๋ผ๊ตฌ์.
RX, Combine, SwiftUI, ํด๋ฆฐ ์ํคํ ์ฒ, TCA, MVI, MVP, CI/CD, Tuist, Git, CS, SOLID...
์์ฃผ ๋ง์ ๋จ์ด๋ค์ด ์ค๊ณ ๊ฐ๋๋ฐ
์ ๊ฐ ์ดํดํ๋ ๊ฑด ๋ช ๊ฐ ๋์ง ์์์ต๋๋ค.
์ ๋ง ์์ง ๋ฉ์๊ตฌ๋.. ๋์์์ด ๋ฌ๋ ค๊ฐ์ผ๊ฒ ๊ตฌ๋.. ๋ฅผ ์๊ฐํ๋ฉด์
ํ๋ฒ๋ ๋ค์งํ๋ ๊ฒ ๊ฐ์์.
์ง์ง ์ด์ฌํ ํ์.
" ๋ค๋ฅธ ์ฌ๋์๊ฒ ํ๋๋ฆฌ์ง ๋ง๊ณ ๋ด ๊ณต๋ถ ๋ด ํ ์ผ์ ํด์ผํ๋ค. "
๋ผ๋ ์ทจ์ ์ ๋ฐฐ๋๋ค์ ๋ง์ด ๊ฐ์ฅ ๊ธฐ์ต์ ๋จ๋ค์.
์ฌ๋ฌ ๊ฐ์๋ ์ถ์ฒ๋ฐ๊ณ , ์ด๋ป๊ฒ ์ทจ์ ์ค๋น๋ฅผ ํ๊ณ , ์ด๋ค ์์ผ๋ก ๊ณต๋ถ๋ฅผ ํด์ผํ๋ ์ง ๋๋์ฑ ํ์ด ์กํ ๊ฒ ๊ฐ์ต๋๋ค.
์ค๋๋ ๊ตณ๋ฐค๐