ํฐ์คํ ๋ฆฌ ๋ทฐ
[iOS] - {Function(ํจ์) or Method(๋ฉ์๋)} vs Computed Property(์ฐ์ฐ ํ๋กํผํฐ)
B_log 2021. 4. 30. 16:58๐ฑ Functions(ํจ์) vs Computed Property(์ฐ์ฐ ํ๋กํผํฐ)
๐ฏ ๋ฌธ์ ์ ์ํ๊ธฐ
์์๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ์ ์ํด๋ณด๊ฒ ์ต๋๋ค. ํฐ์ผ์ ๋ฝ์์ฃผ๋ ๋ฐ๊ถ๊ธฐ๊ฐ ์๋ค๊ณ ํ ๋ ๋ฐ๊ถ๊ธฐ๋ ํ์ฌ ์ํ์ ํฐ์ผ ๋ฒํธ๋ฅผ ๊ฐ๊ณ , ๋๊ตฐ๊ฐ ํฐ์ผ์ ๋ฝ๋๋ค๋ฉด ํฐ์ผ ๋ฒํธ๋ฅผ ํ๋ ๋์ฌ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ด๊ฒ์ ์ฝ๋๋ก ๊ตฌํํด๋ณด๋ฉด
struct ticketGenerator { var ticketNumber: Int }
๋ก ํํํ ์ ์์ต๋๋ค. ์ด์ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ๊ฒ์ ๋ฐ๊ถ์ ์ซ์๋ฅผ ํ๋์ฉ ๋์ฌ๊ฐ๋ ๋ก์ง์ ๋๋ค. ์ด๊ฒ์ ๋ฉ์๋๋ก ๊ตฌํํ๋ฉด
struct ticketGenerator { var ticketNumber: Int func raiseTicketNumber() -> Void { ticketNumber += 1 } }
๊ฐ ๋ฉ๋๋ค. ํ์ง๋ง ์๊ฐํด๋ณด๋ฉด ์ด๊ฒ์ ticketNumber์ ์ํ๋ง ๋ณํ์์ผ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์ซ์์์ 1์ ๋ํ ์ซ์๋ฅผ ๋ฐํํ๋๋ก ์ฐ์ฐ ๋ฉ์๋๋ฅผ ํตํด ์ ์ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ์ฐ์ฐ ๋ฉ์๋๋ก ์ ์ํ๋ฉด
struct ticketGenerator { var ticketNumber: Int { ticketNumber += 1 return ticketNumber } }
๋ก ํํํ ์ ์์ต๋๋ค. ๊ธฐ๋ฅ์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ธ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์ธ์ ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ ๊น์?
๐ Function, Computed Property ์ฐจ์ด ํ์ ํ๊ธฐ
๋ธ๋ก๊ทธ ๊ธ์ ํตํด ๊ทธ ์ฐจ์ด๋ฅผ ํ์ ํด๋ณด๊ฒ ์ต๋๋ค
If any call is considered to be expensive, can throw an error, or returns different results when invoked multiple times โ a function is preferred. If a call is cheap, does not throw errors, returns the same result or caches the result of its first invocation โ a computed property will probably suit your needs.
์์ ๊ธ์ ํด์ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํธ์ถ๋๋ ํจ์๊ฐ ๋๋ฌด ๋ณต์กํ๊ฑฐ๋ error๋ฅผ ๋ฐ์์ํฌ ๋, ํน์ ์ฌ๋ฌ๋ฒ ์์ ์ ๋ฐ๋ณตํ๋ฉด์ ๋ค๋ฅธ ๊ฐ๋ค์ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ฉด ํจ์๊ฐ ๋จ์ํ๊ณ error๋ฅผ ๋ฐ์์ํค์ง ์์ผ๋ฉฐ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฑฐ๋ ์ฒซ๋ฒ์งธ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๋ ๊ฒฝ์ฐ ์ฐ์ฐ ํ๋กํผํฐ๊ฐ ์ ํฉํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด ์๋์ ๊ฒฝ์ฐ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ถ์ฒ๋๊ณ ๊ทธ ์ธ์๋ ์ฐ์ฐ ํ๋กํผํฐ๋ก ๊ตฌํํ๋ ๊ฒ์ด ๋ ์ถ์ฒ๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- ๊ตฌํ๋๋ ํจ์์ ๋ก์ง์ด ๋ณต์กํ ๋
- ํธ์ถ์ด error๋ฅผ ๋ฐ์์ํฌ ๋
- ๋งค ์์ ๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๋ฐํํ ๋(ํ๋กํผํฐ ๊ฐ์ด ๋ณํ ๋)
๐ซ ์์์ ๊ฐ๋ ์ ์ฉ
์์ ๊ธฐ์ค์ผ๋ก ํฐ์ผ ๋ฐ๊ถ๊ธฐ๋ฅผ ๋ค์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
1๋ฒ ๊ธฐ์ค -> (X) ๋จ์ํ property๋ฅผ 1์ฉ ์ฆ๊ฐ์์ผ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ๋ค๊ณ ๋ณผ ์๋ ์์ต๋๋ค.
2๋ฒ ๊ธฐ์ค -> (X) ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
3๋ฒ ๊ธฐ์ค -> (O) ๋งค ์์ ๋ง๋ค 1์ฉ ์ฆ๊ฐํ ์๋ก์ด ๊ฐ์ ํฐ์ผ ๋ฒํธ๋ก ์ ๊ณตํฉ๋๋ค.
3๋ฒ ๊ธฐ์ค์ ์ถฉ์กฑ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๊ถ๊ธฐ์ ๋ฒํธ๋ฅผ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋ ๊ตฌํ์ ๋ฉ์๋๊ฐ ๋ ์ ํฉํด๋ณด์ ๋๋ค.
'iOS ์ฑ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- Brackets#Stacks and Queues#Codility#Python
- ๋ฐฐ์ดํฉ์น๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- ์์ด์ฌ์ดํด#BOJ#Python
- Triangle#Sorting#Codility#Python
- ๋ฆฌ๋ชจ์ปจ#์์ ํ์#BOJ#Python
- filter#isalnum#lower
- ๋ฐ๋ณต์์ด#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- PassingCars#Codility#Python
- N์ผ๋ก ํํ#DP#Programmers#Python
- ํ ํ๋ก์ ํธ#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ํ ๋งํ #๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ํธ์ฝ๋#dp#BOJ#Python
- ์ฟผ๋ํธ๋ฆฌ#BOJ#๋ถํ ์ ๋ณต#Python
- django#slicing
- ๋ ์ง ๊ณ์ฐ#BOJ#์์ ํ์#Python
- ๋๋ฌด์๋ฅด๊ธฐ#BOJ#์ด๋ถํ์#Python
- ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ#BackTracking
- API#lazy#
- NumberofDiscIntersections#Codility#Sort#Python
- ๋์ ์๋ฅด๊ธฐ#์ด๋ถํ์#BOJ#Python
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ์ธํฐ๋ทฐ#4์ฅ
- ์ฌ์๊ฐ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ๊ณต์ ๊ธฐ ์ค์น#BOJ#์ด๋ถํ์#Python
- Distinct#Codility#Python
- ์ข ์ด์๋ฅด๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- django
- Swift#Tuples#Range
- ํฐํ๋น์น#๋ฆฌ์ฝ#xbox#controller
- ๋ณ๋ ๋์ดํธ#BOJ#ํ์๋ฒ#Python
- ๋ฏธ๋ก ํ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |