๐ŸŽ iOS & Swift

[Swift] Stored Property vs Computed Property vs Method

taeeekki 2022. 11. 4. 16:03

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/ 

- https://velog.io/@wonhee010/Computed-Property%EC%97%B0%EC%82%B0-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-vs-Method