Stored Property vs Computed Property vs Method
์ต๊ทผ์ ๊ธฐ์ด๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๊ปด ํํํ ํ์์ ๊ถ๊ธํ๋ ๊ฒ์ด๋ ๋ฌธ๋ฒ๋ค์ ๋ค์ ๋ณด๊ณ ์๋๋ฐ ์๊ฐ๋ณด๋ค ์ฌ๋ฐ๋ค.. (์, ์ผ๋จ ์์ ์ ์์ฌ..!!) ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ธ์ ์ฐ๋ ๊ฒ์ด ์ข์์ง ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ๊ด์ฐฎ๋ค๊ณ ๋๋ ๊ด์ ์ ๊ธ์ด ์์ด์ ๋ฉ๋ชจํด๋๋๋ค.
์ ์ฅ ํ๋กํผํฐ(Stored Property)
- - ๊ฐ์ ๋ณํ๊ฐ ์๊ณ , ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทผ(Read)ํด์ ์ฐ๋ ค๊ณ ํ ๋
- - ๋ง๋ค์ด๋๊ณ ๊ฑฐ์ ์ฝ์ง ์๊ฒ๋๋ ์ ์ฅ ํ๋กํผํฐ์ธ ๊ฒฝ์ฐ lazy ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.
- - ๋ง์ฐฌ๊ฐ์ง๋ก Property Observer๋ฅผ ํตํด์๋ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ณผ ์ ์์ง ์์๊น? (- ์ ๋ถ๋ถ์ ์ด์ง ์๋ฟ์ง ์๋๋ค.)
์ฐ์ฐ ํ๋กํผํฐ(Computed Property)
- - ๋ค๋ฅธ ํ๋กํผํฐ์ ์ข ์์ฑ์ด ์์ ๋ ์ฆ, ๋ค๋ฅธ ๊ฐ์ ์ํด์ ์ํฅ์ ๋ฐ๋ ๊ฒฝ์ฐ
- - ๊ฐ์ ๊ณ์ฐํด์ผํ ๋
- - ๊ผญ ์ฐ์ฐ์ด ํ์ํ์ง ์๋ค๋ฉด ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ฐ์ง ์๋ ๊ฒ์ด ๋์๋ณด์ธ๋ค. (๋ถํ์ํ ์ฐ์ฐ์ ์ค์ด๋ ๊ฒ ์ข์ ๋ฏ)
๋ฉ์๋(Method)
- - ๋ง์ ๊ธ๋ค์ ๋ณด๋ O(1)์ ์๊ฐ๋ณต์ก๋๊ฐ ๋๋ ์ฐ์ฐ์ด๋ฉด ์ฐ์ฐ ํ๋กํผํฐ๊ฐ ์ ์ ํ๊ณ , ๋ ๋ฌด๊ฑฐ์ด ์์ (์ฆ, O(N)์ด์์ ์๊ฐ๋ณต์ก๋๊ฐ ๋๋ ์ฐ์ฐ์ธ ๊ฒฝ์ฐ)์๋ ๋ฉ์๋์ ์ฌ์ฉ์ด ์ ์ ํ๋ค๊ณ ์ด์ผ๊ธฐํ๊ณ ์๋ค.
- - ๋งค ์ฐ์ฐ/๋์/์์ ๋ง๋ค ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ฉ์๋๊ฐ ๋ ์ ํฉํด๋ณด์ธ๋ค. (์ด๊ฒ ๊ฐ์ฅ ์๋ฟ์)
- - ๋ค๋ฅธ ํ๋กํผํฐ์์ ์ข ์ ๊ด๊ณ๋ฅผ ์ ์งํ๊ณ ์๋ ์ํฉ์์ ๋จ์ํ ๊ฐ์ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ฐ์ฐ ํ๋กํผํฐ๊ฐ ๋ ์ ์ ํ ๊ฒ ๊ฐ๋ค. Enum์์ Case์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ ๋ฐํ?์ด ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฌ์ด ์์์ธ ๊ฒ ๊ฐ๋ค. (๋ง์ง๋ง ๋ธ๋ก๊ทธ์์ ์ ๋ง ์๋ฟ๊ฒ ์ ์ค๋ช ํด์ฃผ๊ณ ์๋ค.)
- - ๊ทธ๋ฆฌ๊ณ Error๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ ๊ฒฝ์ฐ ๋ฉ์๋๊ฐ ์ฐ์ฐ ํ๋กํผํฐ๋ณด๋ค ์ ์ ํ๋ค๊ณ ์๊ฐํ๋ค.
๋ณด์ํ ๋ด์ฉ์ด ์์ผ๋ฉด ์ ๋ฐ์ดํธ ํด๋ณด๊ฒ ๋ค.
ํ๋ฆฐ ๋ด์ฉ์ด๋ ์ถ๊ฐํ ๋ด์ฉ์ด ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๋ ํผ๋ฐ์ค
- https://www.avanderlee.com/swift/computed-property/
- https://medium.com/swift-india/functions-vs-computed-property-what-to-use-64bbe2df3916
- https://daheenallwhite.github.io/swift/2019/05/09/Computed-Property-vs-Method-What-To-Choose/