๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

2021.12.27 ์˜ค๋Š˜์˜ ๋ฐฐ์›€

์˜ค๋Š˜ ํ•œ ์ผ.

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€๊ธฐ

  • ๊ธฐ์ˆ  ๋ฐœํ‘œ ์ค€๋น„ (Method Dispatch)
  • ์ž์†Œ์„œ ์“ฐ๊ธฐ

์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ.

  • ์Šค์œ„ํ”„ํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” inliing ์ตœ์ ํ™”๋ฅผ ํ•œ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ค๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•จ์ˆ˜๋กœ ์ •์˜๋กœ ๊ต์ฒดํ•ด์„œ ์ฝœ์Šคํƒ ๋น„์šฉ์„ ์ค„์ด๋Š”๊ฒƒ.

  • Whole Module Optimization ์˜ต์…˜์„ ํ‚ค๋ฉด ์ปดํŒŒ์ผ ํ•  ๋•Œ ๋ชจ๋“ˆ๋‹จ์œ„๋กœ ์ปดํŒŒ์ผํ•ด์„œ internal๋กœ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋“ค๋„ ๋ชจ๋“ˆ ๋‚ด์— ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด Static Dispatch๋กœ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • enclosing scope๋Š” ์ž์‹ ์„ ๊ฐ์‹ธ๋Š” ์Šค์ฝ”ํ”„๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ž˜์„œ private์ด ์ •์˜ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ์˜ ์ ‘๊ทผ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค๊ณ  ๋งํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • nested ํƒ€์ž…์ด ์•„๋‹Œ private class์™€ fileprivate class๋Š” ํšจ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค. class์˜ enclosing scope๊ฐ€ file ์ด๋‹ˆ๊นŒ.

์˜ค๋Š˜ ๋Š๋‚€ ๊ฒƒ.

  • ์Šค์œ„ํ”„ํŠธ๋Š” ์ง„์งœ ์žฌ๋ฐŒ๋Š” ์–ธ์–ด์ธ๋ฐ ์ง„์งœ ์–ด๋ ต๋‹ค.. ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๊ณต๊ฐœ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด์„œ ๊ทธ๋Ÿฐ๋“ฏ..

๋‚ด์ผ์˜ ๊ณ„ํš.

  • Existential Container ์ •๋ฆฌ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€๊ธฐ 
  • ์ž์†Œ์„œ ์“ฐ๊ธฐ

์˜ค๋Š˜์˜ ๊ฐ์‚ฌ.

  • ์˜ค๋Š˜์€ ํ‰์†Œ๋ณด๋‹ค ๋ฌธ์ œ๊ฐ€ ์•„์ฃผ ์กฐ๊ธˆ ๋” ์ž˜ ํ’€๋ ธ์–ด์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~!