๐Ÿฅฐ ์šฐ๋ฆฌ ๊ฐ™์ด .. '์ฝ”ํ‹€๋ฆฐ' ํ• ๊นŒ์š”?

H43ROยท2021๋…„ 8์›” 7์ผ
89

Kotlin ๊ณผ ์นœํ•ด์ง€๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
3/18
post-thumbnail
post-custom-banner

โ›”๏ธ ์ฝ”ํ‹€๋ฆฐ ๋•ํ†ต์‚ฌ๊ณ  ๋‹ค๋ฐœ ๊ตฌ์—ญ์ž…๋‹ˆ๋‹ค

์ฃผ์˜ํ•˜์„ธ์š”. ์ฝ”ํ‹€๋ฆฐ์˜ ๋งค๋ ฅ์— ๋น ์ง€๋ฉด ํ•œ๋™์•ˆ ๋ฒ—์–ด๋‚˜์ง€ ๋ชปํ• ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค. ์‚ฌ์‹ค ํ•„์ž์˜ ์ฝ”ํ‹€๋ฆฐ ๋•์งˆ์šฉ ํฌ์ŠคํŒ…์ด๋‹ค. ํ•„์ž๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ฝ”ํ‹€๋ฆฐ์„ ๋งค์šฐ ์‚ฌ๋ž‘ํ•œ๋‹ค.
์ฝ”ํ‹€๋ฆฐ์ด๋ผ์„œ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ข‹์•„ํ•˜๊ณ  ๋ณด๋‹ˆ ์ฝ”ํ‹€๋ฆฐ์ด์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.
๋”ฐ๋ผ์„œ ์ฝ”ํ‹€๋ฆฐ์˜ ๋งค๋ ฅ์„ ๋„๋ฆฌ ์•Œ๋ฆฌ๊ณ  ์‹ถ์–ด ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค!

๐Ÿ‘ฅ ์™œ ์ €๋ž˜.. ์™ค์ผ€ ํ˜ธ๋“ค๊ฐ‘์ด์•ผ..

์ด์ƒํ•˜๊ฒŒ ๋ณด์ง€๋ง๊ณ  ํ•œ ๋ฒˆ๋งŒ, ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ด ๊ธ€์„ ์ฝ์–ด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ํŠนํžˆ '์ž๋ฐ”' ๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด..
๋ถ„๋ช… ์•ˆ๋“œ๋กœ์ด๋“œ, ์Šคํ”„๋ง ๋ถ€ํŠธ ๋“ฑ ๋ถ„์•ผ์—์„œ ์ž๋ฐ” โ†’ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ์™„์ „ํžˆ ์ „ํ™˜๋˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฌธ์ œ์ผ ๊ฒƒ์ด๋‹ค!!

๐Ÿ’๐Ÿปโ€ ์šฐ๋ฆฌ ์ฝ”ํ‹€๋ฆฐ์€ ์ด๋Ÿฐ ์•„์ด๋ž๋‹ˆ๋‹ค

์ฝ”ํ‹€๋ฆฐ์€ ์ž๋ฐ”, ์Šค์นผ๋ผ์ฒ˜๋Ÿผ JVM ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‹ค.
๊ณต์‹ ์•ˆ์ •ํŒ์ด 2016๋…„ 2์›” 15์ผ ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์œผ๋‹ˆ ์ •๋ง ์‹ ์ƒ์•„๊ฐ€ ๋”ฐ๋กœ ์—†๋‹ค. (์ ๊ณ ๋ณด๋‹ˆ ๋ฒŒ์จ 5๋…„์ด ๋„˜๊ธด ํ–ˆ๊ตฌ๋‚˜)

์ฝ”ํ‹€๋ฆฐ์€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์‹ค์šฉ์ ์ด๋ฉฐ, ์ž๋ฐ” ์ฝ”๋“œ์™€์˜ ์ƒํ˜ธ์šด์šฉ์„ฑ์„ ์ค‘์‹œํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์— ๋Œ€๋ถ€๋ถ„ ์ฝ”ํ‹€๋ฆฐ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ ‘๋ชฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ, ์Šคํ”„๋ง ๋ถ€ํŠธ ๋“ฑ ๋ถ„์•ผ์—์„œ ๋ง์ด๋‹ค.

๊ธฐ์กด ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€๋„ ๋‹จ 1%์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ์—†์ด ํ•จ๊ป˜ ์ž˜ ๋™์ž‘ํ•˜๋ฉฐ, ์„ฑ๋Šฅ๋„ ๋น„์Šทํ•˜๋‹ค.

๊ทธ๋Ÿผ, ์ฝ”ํ‹€๋ฆฐ์˜ ํ•ต์‹ฌ ์ฃผ์š” ํŠน์„ฑ ๋ช‡ ๊ฐ€์ง€๋ฅผ ํ†บ์•„๋ณด์ž.

1. ํƒ€์ด์ด์ž…์€.. ์ •์ ์œผ๋กœ ์ง€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด์ œ ํƒ€์ž… ์ถ”๋ก ์„ ๊ณ๋“ค์ธ.

์ •์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ํƒ€์ž… ๋“ฑ์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ์–ธ์–ด์ด๋‹ค. ์ž๋ฐ”๋„ ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

์ž๋ฐ”์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ”ํ‹€๋ฆฐ๋„ ์ •์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด์ด๋‹ค. ๊ฐ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ปดํŒŒ์ผ ์‹œ์ ์— ์•Œ ์ˆ˜ ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž…์„ ๊ฒ€์ฆํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์ •ํ™•์„ฑ์ด ๋”์šฑ ์˜ฌ๋ผ๊ฐ„๋‹ค.

๐Ÿถ : ๊ทธ๋Ÿผ ๊ทธ ๋ฐ˜๋Œ€์ธ '๋™์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด'๋Š” ๋ญ๊ฐ€ ์ข‹์€๋ฐ์š”?
๐Ÿ’๐Ÿปโ€โ™‚๏ธ : ํƒ€์ž…์„ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋„ฃ์„ ์ˆ˜ ์žˆ์–ด ํƒ€์ž… ๋ช…์‹œ๊ฐ€ ํ•„์š”์—†๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์ฝ”๋“œ๊ฐ€ ๋” ์งง์•„์ง€๊ฒ ์ฃ !
๋˜ํ•œ, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ฃ !

ํ•˜์ง€๋งŒ, ๋™์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด๋Š” ์ด๋ฆ„์ด ์˜คํƒ€๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž˜๋ชป ์ ‘๊ทผํ–ˆ์„ ๋•Œ, ์ปดํŒŒ์ผ ์‹œ ๊ฑธ๋Ÿฌ๋‚ด์ง€ ๋ชปํ•˜๊ณ 
์‹คํ–‰ ์‹œ์ ์ด ๋˜์–ด์„œ์•ผ ์˜ค๋ฅ˜๋ฅผ ๋ฟœ์œผ๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊บผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

ํ•„์ž๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด์˜ ์žฅ์ ์ด ๋งค์šฐ ๊ฐ•๋ ฅํ•˜์—ฌ ์ด๋ฅผ ์„ ํ˜ธํ•˜๋Š” ํŽธ์ด๋‹ค. ์ž๋ฐ”๋„ ์ด๋Ÿฐ ๋ถ€๋ถ„์—์„  ์ข‹๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์—์„œ ํ•ญ์ƒ ๊ท€์ฐฎ๊ฒŒ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ๊ทธ๋งŒํผ ํฐ ๋ถˆํŽธํ•จ, ๊ทธ๋ฆฌ๊ณ  ๋‹จ์ ์œผ๋กœ ๋‹ค๊ฐ€์˜ค๊ณค ํ–ˆ๋‹ค.

๋ฐ˜๋ฉด ์ฝ”ํ‹€๋ฆฐ์€, ํƒ€์ž…์„ ์ง์ ‘ ๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

์ฝ”ํ‹€๋ฆฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฌธ๋งฅ์ƒ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์ž๋™์œผ๋กœ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํƒ€์ž… ์„ ์–ธ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ, ์–ด๋–ค ๊ฒฝ์šฐ์—” ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ํ˜•๋„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค!

์ž ์‹œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž! ์ฝ”ํ‹€๋ฆฐ์—์„œ sum() ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์„ ์–ธํ–ˆ๋‹ค.

val a: Int = 3
val b: Int = 5

fun sum(a: Int, b: Int): Int {
    return a + b
}  

print(sum(a, b))  // 8

์ž๋ฐ”์™€ ๋ณ„ ๋‹ค๋ฅผ ๊ฑฐ ์—†์ด, ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด ๋งŽ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ฝ”ํ‹€๋ฆฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค!

val a = 3
val b = 5

fun sum(a: Int, b: Int): Int {
    return a + b
}  

print(sum(a, b))  // 8

ํ•จ์ˆ˜์— ํ‘œํ˜„์‹ (Expression) ๋Œ€์ž…์„ ํ•˜๋ฉด, ์ด๋Ÿฐ ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

val a = 3
val b = 5

fun sum(a: Int, b: Int) = a + b

print(sum(a, b))  // 8

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ํƒ€์ž…์€ ์ •์ ์œผ๋กœ ์—„๊ฒฉํžˆ ์ง€์ •ํ•˜๋Š” ๊ฑด ๋งž์œผ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํŽธ์˜์„ฑ๊ณผ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ ์ฐจ์›์—์„œ ์ด๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!

์ด๋ฅผ ํ†ตํ•ด ์ฝ”ํ‹€๋ฆฐ์˜ ์ฒ ํ•™ ์ค‘ ํ•˜๋‚˜์ธ '๊ฐ„๊ฒฐ์„ฑ'์—์„œ ํ•œ ๋ฐœ์ง ๋” ์•ž์„œ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ž๋ฐ”์ฒ˜๋Ÿผ ํƒ€์ž… ๋ช…์‹œ๋ฅผ ํ•ด์ค„ ํ•„์š” ์—†์ด ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ๋ฏฟ๊ณ  ๋งก๊ธธ ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒƒ ํ•˜๋‚˜๋งŒ์œผ๋กœ ์“ธ ๋ฐ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ํ™• ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค!

2. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ + ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ฝ”ํ‹€๋ฆฐ์€ ์ž๋ฐ”์ฒ˜๋Ÿผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋”ฐ๋ฅด๊ธฐ๋„ ํ•˜์ง€๋งŒ, ์ƒˆ๋กญ๊ฒŒ๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„๋„ ๋™์‹œ์— ์ฑ™๊ธด ์–ธ์–ด์ด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์•ผ๊ธฐ๋Š” ๋‘ ๋ง ํ•  ๊ฒƒ๋„ ์—†๋Š”๋ฐ, ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค์—๊ฒ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ƒ์†Œํ•˜๊ฒŒ ๋‹ค๊ฐ€์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋… 3๊ฐ€์ง€

  • ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ์‹œ๋ฏผ : ํ•จ์ˆ˜๋ฅผ ์ผ๋ฐ˜ ๊ฐ’์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋„ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Œ
  • ๋ถˆ๋ณ€์„ฑ : ์ƒ์„ฑ ์ดํ›„ ์ ˆ๋Œ€๋กœ ๋‚ด๋ถ€ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
  • ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ์—†์Œ : ์ž…๋ ฅ์ด ๊ฐ™์œผ๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ณด์žฅํ•˜๋ฉฐ, ํ•จ์ˆ˜ ์™ธ๋ถ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ (์ˆœ์ˆ˜ํ•จ์ˆ˜)

ํŠนํžˆ 'ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ์‹œ๋ฏผ'์ด ๋ญ” ์†Œ๋ฆฐ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ ๋  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž!

fun findAlice() = findPerson { it.name == "Alice" }  // ์ด๋ฆ„ ํ”„๋กœํผํ‹ฐ๊ฐ€ Alice ์ธ ๊ฐ์ฒด ํƒ์ƒ‰
fun findBob() = findPerson { it.name == "Bob" } // ์ด๋ฆ„ ํ”„๋กœํผํ‹ฐ๊ฐ€ Bob ์ธ ๊ฐ์ฒด ํƒ์ƒ‰

์œ„ ์˜ˆ์ œ๋Š” ํŠน์ • ์‚ฌ๋žŒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ findPerson ์— ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜ (์ฝ”๋“œ ๋ธ”๋Ÿญ) ์„ ์ธ์ž๋กœ ๋„˜๊ฒผ์œผ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฆฌํ„ด์œผ๋กœ ๊ฐ–๋Š”๋‹ค.

findPerson ์€ ์‚ฌ๋žŒ์„ ์ฐพ๋Š” ์ผ๋ฐ˜ ๋กœ์ง์ด ๋‹ด๊ฒจ์žˆ๋Š” ๊ฒƒ์ด๊ณ , { } ๋กœ ๊ฐ์‹ธ์ง„ ๋ถ€๋ถ„์€ ์ด๋ฆ„์ด ์—†๋Š” ์ฝ”๋“œ๋ธ”๋Ÿญ, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์—„์—ฐํ•œ 'ํ•จ์ˆ˜'์ด๋‹ค.

์ด ๊ตฌ๋ฌธ์„ ๋ฐ”๋กœ '๋žŒ๋‹ค ์‹ (Lambda Expression)' ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ •๋ง ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์šฐ์•„ํ•ด์ง„๋‹ค.
์ด๋ ‡๋“ฏ ํ•จ์ˆ˜๋ฅผ ๊ฐ’์ฒ˜๋Ÿผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋”์šฑ ๊ฐ•๋ ฅํ•œ ์ถ”์ƒํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋งŽ์€ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘ฎ๐Ÿปโ€โ™€๏ธ : ์—ฅ ใ…‹ใ…‹ ์ž๋ฐ”๋„ ๋žŒ๋‹ค ๋˜๋Š”๋ฐ์š”? ์ฝ”ํ‹€๋ฆฐ๋งŒ ๋˜๋Š” ์ฒ™ ์–ต๋น  ์˜ค์ง€๋„ค์š” ใ…‹ใ…‹๋ฃจ์‚ฅ๋ฝ•

๋™์˜ ๋ชป ํ•œ๋‹ค. ์ž๋ฐ”์˜ ๋žŒ๋‹ค๋Š” ์•„๋ฌด๋ž˜๋„ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. ํ˜•ํƒœ๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ž ์‹œ ์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.
์•„๋ž˜๋Š”, ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฒ„ํŠผ์— ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ฃผ๋Š” ์ˆœ์ˆ˜ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ์ด๋‹ค. ๋ฒŒ์จ ๋”๋Ÿฝ๋‹ค

button.setOnClickListener(new View.OnClickListener() {
    @Override public void onClick(View view) {
        // ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜์—ˆ์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ๋™์ž‘ ์ •์˜
    }
});

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๊ทธ๋‚˜๋งˆ ์ž๋ฐ”8 ์—์„œ ์ง€์›ํ•˜๋Š” ๋žŒ๋‹ค ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด...
์Œ. ๊ฝค๋‚˜ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ค„์–ด๋“  ๋ชจ์–‘์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ๋ณ„๋กœ ๋ง˜์— ์•ˆ ๋“ ๋‹ค.

button.setOnClickListener(view -> { 
    // ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜์—ˆ์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ๋™์ž‘ ์ •์˜ 
});

์•„๋ž˜ ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

button.setOnClickListener { 
    // ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜์—ˆ์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ๋™์ž‘ ์ •์˜ 
}

๋ช‡ ๊ธ€์ž ์ฐจ์ด๋กœ ํ›จ์”ฌ ๊น”๋”ํ•ด๋ณด์ธ๋‹ค. ์–ต๋น  ์•„๋‹ˆ๊ณ  ํŒฉํŠธ๋‹ค. ์ž๋ฐ” ์ฝ”๋“œ์˜ ์ € view ๋ผ๋Š” ๋†ˆ์€ ์“ฐ์ง€๋„ ์•Š๋Š”๋‹ค.

์ฝ”ํ‹€๋ฆฐ์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ํƒœ์–ด๋‚œ ๋งŒํผ ์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ ์„ ๋”์šฑ ๊ตด๋ฆฌ๊ธฐ ์œ„ํ•ด ์–ธ์–ด ์ฐจ์›์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ง€์›์„ ํ•ด์ค€๋‹ค!

  • ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๊ฑฐ๋‚˜, ํ•จ์ˆ˜๊ฐ€ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋žŒ๋‹ค ์‹์„ ์ง€์›ํ•จ์œผ๋กœ์จ ์ผ๋ถ€ ์ฝ”๋“œ ๋ธ”๋Ÿญ์„ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ, ํ˜น์€ ๋ณ€์ˆ˜ ๋“ฑ์œผ๋กœ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐ์ฒด์™€ ์ปฌ๋ ‰์…˜์„ ํ•จ์ˆ˜ํ˜• ์Šคํƒ€์ผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ณ ์ฐจํ•จ์ˆ˜ API ์ œ๊ณต

์‹ค์ œ๋กœ ์ปฌ๋ ‰์…˜ ๊ณ ์ฐจํ•จ์ˆ˜๋Š” ์ƒ๋‹นํžˆ ๋งŽ์ด ์“ฐ์ด๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด ์ด๋Ÿฐ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

val a = listOf(-1, -2, 1, 2)
val b = a.filter { it > 0 }  // x > 0 ์ด๋ผ๋Š” ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊น€

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด b ์—๋Š” [1, 2] ๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ด ์™ธ์—๋„ ํญ ๋„“๊ณ  ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ผ์ด ๋งŽ์•„ ํŽธ๋ฆฌํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅธ๋‹ค๊ณ  ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๊ฐ•์š”ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๊ณ , ๋ณธ์ธ์ด ํŽธํ•œ๋Œ€๋กœ ์‚ฌ์ •์— ๋งž๊ฒŒ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ช…๋ นํ˜• ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋“ฑ ์ ์ ˆํžˆ ์›ํ•˜๋Š” ์Šคํƒ€์ผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. ์ ํ•ฉํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ด๋‹ค.

์–ด์ฐจํ”ผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ฒœ์ฒœํžˆ ์ตํžˆ๋‹ค๋ณด๋ฉด ๊ทธ ์„ธ๊ณ„์—์„œ ๋น ์ ธ๋‚˜์˜ค์ง€ ๋ชปํ•œ๋‹ค ใ…Ž

3. ์˜ค๋น  ์ฐจ ๋ฝ‘์•˜๋‹ค Null ์—†์• ๋Ÿฌ ๊ฐ€

์ฝ”ํ‹€๋ฆฐ์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด๋‹ค! ๋ฐ”๋กœ Null-safety ๋ฅผ ์–ธ์–ด ์ฐจ์›์—์„œ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ž๋ฐ”๋กœ ๋ฌด์–ธ๊ฐ€ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด, ์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ์šฐ๋ฆด ์‹ฌ์‹ฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฐ˜๊ฒจ์ฃผ๊ณค ํ–ˆ๋‹ค. (์œผ ๋ณด๊ธฐ๋งŒ ํ•ด๋„ ํ™˜๋ฉธ๋‚œ๋‹ค)

์˜ค๋น , ์ œ๋ฐœ ์ข€ ๊ทธ๋งŒ ์งˆ์ฒ™๋Œ€.

์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์€ NullPointerException ์—๊ฒŒ ๊ณ„์†ํ•˜์—ฌ ๋‹นํ•˜๊ณ  ์žˆ๋‹ค..

์‹คํ–‰ํ•ด๋†“๊ณ  ๋ณด๋‹ˆ ๊ฐ‘์ž๊ธฐ NullPointerException ์ด ๋กœ๊ทธ์— ์ฐํžˆ์—ฌ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋˜๋˜ ์•…๋ชฝ์ด ๋– ์˜ค๋ฅธ๋‹ค.
NPE ๋Š” ๋ณดํ†ต ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋กœ ์ธํ•ด ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€์ˆ˜์— null ์„ ๋‹ด๊ฒŒ ๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ๊ฐœ๋ฐœ์ž๋„ ์‚ฌ๋žŒ์ธ์ง€๋ผ ์‹ค์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ฐจ์›์˜ ๊ณ ๋ฏผ์ด๊ณ  ์–ด์ฉŒ๋ฉด ํ•ด๊ฒฐ ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜์—ญ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

๋”ฐ๋ผ์„œ ์ฝ”ํ‹€๋ฆฐ์€ ์ด NPE ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ด๊ธฐ ์œ„ํ•ด, ์ปดํŒŒ์ผ ์‹œ์ ์— null ์œ„ํ—˜์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ํ›จ์”ฌ ๋งŽ์ด ๋ฐฉ์ง€ํ•ด์ค€๋‹ค.

์ฝ”ํ‹€๋ฆฐ ํƒ€์ž… ์‹œ์Šคํ…œ์€ null ์ด ๋  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ์ถ”์ ํ•˜๋ฉฐ, ์‹คํ–‰ ์‹œ์ ์— NPE ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์—ฐ์‚ฐ ๋ฐ ์ฝ”๋“œ๋ฅผ ์‚ฌ์ „์— ์•„์˜ˆ ๊ธˆ์ง€์‹œํ‚จ๋‹ค. ์• ์‹œ๋‹น์ดˆ ๋นŒ๋“œ๋„ ๋ชป ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ฆ‰, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜์— null ์„ ๋‹ด์„ ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ์•„์˜ˆ null ์ž์ฒด๊ฐ€ ์—†๋Š” ๊ฑด ์•„๋‹ˆ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด null ์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…๊ณผ ์•„๋‹Œ ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ๋•Œ, null ์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ Nullable ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž๋ฃŒํ˜•์— ? ๋ฅผ ๋ถ™์—ฌ ๋ช…์‹œํ•œ๋‹ค.

val data1: String? = null
val data2: String = ""

๊ทธ๋ฆฌ๊ณ  ์ด Nullable ํƒ€์ž…์ด ์•„๋‹ˆ๋ฉด, ๋ฌด์กฐ๊ฑด null ์ด ๋‹ด๊ธธ ์ˆ˜ ์—†์Œ์„ ๋ณด์žฅํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ Non-Nullable ํƒ€์ž…์— null ์ด ๋‹ด๊ธฐ๋Š” ๋™์ž‘ ๋“ฑ์„ ์‚ฌ์ „์— IDE ์ฐจ์›์—์„œ ๊ธˆ์ง€์‹œ์ผœ์ค€๋‹ค.

์ด ๋ง์„ ๋ชธ์†Œ ์‹ค๊ฐ๋‚˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ž ์‹œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

var a = 5
var data: Int? = null

a = data ?: 100

println(a)

์ด ์ฝ”๋“œ์˜ ์ถœ๋ ฅ๊ฒฐ๊ณผ๋Š” ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ 100 ์ด๋‹ค. ์ค‘๊ฐ„์— ์ƒ์†Œํ•œ ?: ์—ฐ์‚ฐ์ž๊ฐ€ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ด๋Œ์€ ๊ฒƒ์ด๋‹ค.
๋Œ€์ถฉ ๋ณด๋ฉด a ๋ณ€์ˆ˜๊ฐ€ 5๋กœ ์ดˆ๊ธฐํ™” ๋˜์–ด์žˆ๊ณ  data ๊ฐ€ Nullable Int ๋กœ ์„ ์–ธ๋˜์–ด์žˆ๊ณ , null ๋กœ ์ดˆ๊ธฐํ™” ๋˜์–ด์žˆ๋‹ค.
3๋ฒˆ์งธ ์ฝ”๋“œ ๋ผ์ธ์—์„œ ?: ๋™์ž‘์€ ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ํ•œ๋‹ค.

// data ๊ฐ€ null ์ด ์•„๋‹ˆ๋ฉด data ์˜ ๊ฐ’์„ a ์— ๋Œ€์ž…ํ•˜๊ณ ,
// data ๊ฐ€ null ์ด๋ผ๋ฉด ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” 100 ์„ a ์— ๋Œ€์ž…ํ•œ๋‹ค.
a = data ?: 100

// ๋”ฐ๋ผ์„œ a ์—๋Š” 100 ์ด๋ผ๋Š” ๊ฐ’์ด ๋‹ด๊ธฐ๊ฒŒ ๋˜์–ด 100 ์ด ์ถœ๋ ฅ๋œ๋‹ค.

์ด๋ฅผ ์—˜๋น„์Šค ์—ฐ์‚ฐ์ž (Elvis Operator) ๋ผ๊ณ  ํ•œ๋‹ค. a ๋ณ€์ˆ˜์—๋Š” ๋ถ„๋ช…ํ•˜๊ฒŒ null ์ด ๋‹ด๊ธธ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ
์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์ง€์›ํ•จ์œผ๋กœ์จ Nullable ํƒ€์ž…๊ณผ Non-Nullable ํƒ€์ž…์˜ ๋ช…ํ™•ํ•œ ๊ตฌ๋ถ„์„ ๋„์™€์ค€๋‹ค.

(TMI : ์—˜๋น„์Šค ์—ฐ์‚ฐ์ž ์˜ ์—˜๋น„์Šค๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์—˜๋น„์Šค ํ”„๋ ˆ์Šฌ๋ฆฌ๊ฐ€ ๋งž๋‹ค. ์—ฐ์‚ฐ์ž ๋ชจ์–‘์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 90๋„ ๊บพ์–ด๋ณด๋ฉด
์—˜๋น„์Šค ํ”„๋ ˆ์Šฌ๋ฆฌ์˜ ํŠธ๋ ˆ์ด๋“œ๋งˆํฌ ํ—ค์–ด์Šคํƒ€์ผ๊ณผ ๋‹ฎ์•˜๋‹ค๊ณ  ํ•ด์„œ ์—˜๋น„์Šค ์—ฐ์‚ฐ์ž๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค๊ณ  ํ•œ๋‹ค.. ์˜คํ”ผ์…œ์ด๋‹ค.)

์ฝ”ํ‹€๋ฆฐ์˜ Null-safety ๋ฅผ ์œ„ํ•œ ์ง€์›์€ ์ด ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ฉฐ, ์ด ๋ฐ–์—๋„ ๋งŽ์€ ์—ฐ์‚ฐ์ž ๋ฐ API ๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค.
๋”ฐ๋ผ์„œ NPE ๋ฐœ์ƒ ํ™•๋ฅ ์ด ํ›จ์”ฌ ์ค„์–ด๋“ค๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜๋ฅผ ๋ฒ”ํ•  ํ™•๋ฅ ์„ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ด์ „์— ์ค„์—ฌ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

์‹ค์ œ๋กœ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ๋˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•œ ์ดํ›„๋กœ, ANR (์•ฑ ๋น„์ •์ƒ ์ข…๋ฃŒ) ํšŸ์ˆ˜๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ์ค„์–ด๋“ค์—ˆ๋‹ค๋Š” ํ†ต๊ณ„ ์ž๋ฃŒ๋„ ์žˆ์„๋งŒํผ, ํš๊ธฐ์ ์ธ ์„ฑ๊ณผ๋ฅผ ์ด๋ฃจ์–ด ๋‚ธ ๊ฒƒ์ด๋‹ค.



๐Ÿ˜Ž ์š”์•ฝ : ์™„์ „ ์ฉ”ํƒฑ ๊ฐ„์ง€ ์ฒ ์ฒ  ์–ธ์–ด์ž„

๋†๋‹ด์ด๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค!

  • ์ฝ”ํ‹€๋ฆฐ์€ ํƒ€์ž… ์ถ”๋ก ์„ ์ง€์›ํ•˜๋Š” ์ •์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด์ด๋‹ค. ๊ธฐ์กด ์ž๋ฐ”์˜ ๊ฒฝ์šฐ๋Š” ํƒ€์ž…์„ ์ผ์ผํžˆ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ๊ณ  ์ด๊ฒƒ์€ ์ •์  ํƒ€์ž… ์ง€์ • ์–ธ์–ด์˜ ๋‹จ์  ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋„ ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์€ ํƒ€์ž… ์ถ”๋ก ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ •ํ™•์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋ฉด์„œ๋„ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค!
  • ๊ฐ์ฒด์ง€ํ–ฅ, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ์ผ๊ธ‰ ์‹œ๋ฏผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ค€ ๋†’์€ ์ถ”์ƒํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ถˆ๋ณ€ ๊ฐ’ ์ง€์›์„ ํ†ตํ•ด ์œ„ํ—˜ํ•œ ์ž์› ๊ณต์œ ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์–ด ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ณ  ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค!
  • ์‹ค์šฉ์„ฑ, ๊ฐ„๊ฒฐ์„ฑ, ์•ˆ์ „์„ฑ, ์ƒํ˜ธ์šด์šฉ์„ฑ์ด ์ข‹๋‹ค. ์ผ๋ฐ˜์  ์ž‘์—…์— ๋Œ€ํ•ด ์ด๋ฏธ ์ž˜ ์•Œ๋ ค์ง„ ์‹ค์šฉ์ ์ธ ํ•ด๋ฒ•์„ ์ฑ„ํƒํ•˜๊ณ , NPE ๋“ฑ์˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์ž๋ฐ”์™€ ์•„๋ฌด๋Ÿฐ ํ˜ธํ™˜ ๋ฌธ์ œ ์—†์ด ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ด๋‹ค!

์–ด๋–ค๊ฐ€, ์ด ์ •๋„๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘ '์ฝ”ํ‹€๋ฆฐ'์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

๋‹น์—ฐํžˆ ์ด ๊ธ€์—์„œ ์—ด๊ฑฐํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์žฅ์ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.
๊ธ€์ด ๋งŽ์ด ๊ธธ์–ด์งˆ๊นŒ๋ด ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์„ ๋‚˜์—ดํ–ˆ์„ ๋ฟ์ด๋‹ค. (ํ•˜๋ฃจ์ข…์ผ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค)

๊ดœํžˆ ํ•„๋“œ์— ์žˆ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฝ”ํ‹€๋ฆฐ์„ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
๊ดœํžˆ ๊ตฌ๊ธ€์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ๊ฐœ๋ฐœ ์–ธ์–ด๋กœ ์ฝ”ํ‹€๋ฆฐ์„ ์ง€๋ชฉํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
๋ชจ๋“  ์ผ์—” ํ•ฉ๋ฆฌ์  ์ด์œ ๊ฐ€ ๋”ฐ๋ฅด๋Š” ๋ฒ•์ด๋‹ค.

์ด๋ฏธ ์ˆ˜์ฐจ๋ก€ ๊ฒ€์ฆ์ด ๋œ ์–ธ์–ด๊ณ , ์•ž์œผ๋กœ์˜ ๋กœ๋“œ๋งต๋„ ์ฐฝ์ฐฝํ•˜๋‹ค.

ํ•„์ž๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์ด์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์„ ์–ด๋–ค ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์—๋งŒ ๊ตญํ•œํ•ด์„œ ์ข‹๋‹ค๊ณ  ์™ˆ๊ฐ€์™ˆ๋ถ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์–ธ์–ด ์ฐจ์›์—์„œ์˜ ์žฅ์ , ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ํŽธ๋ฆฌํ•จ์„ ๋งค์šฐ ๋งŽ์ด ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ธ€์„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
(๋‹ค ์“ฐ๊ณ  ๋‚˜๋‹ˆ ๋ฌด์Šจ ๊ฑฐ์˜ ์‹ ์ฒœ์ง€ ์‹ ๋„ ๊ธ‰์œผ๋กœ ์ ์–ด๋†จ๋Š”๋ฐ, ์•„๋ฌดํŠผ ์ฝ”ํ‹€๋ฆฐ์€ ์ตœ๊ณ ๋‹ค ใ… ใ… )

์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด๋ผ๋ฉด, ํ•œ ๋ฒˆ์ฏค์€ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”!

์ฝ”ํ‹€๋ฆฐ์€ ๋‹น์‹ ์—๊ฒŒ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์„ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"์ฝ”ํ‹€๋ฆฐ์„ ๋‹น์‹ ์˜ ์ฝ”๋“œ์— ๋“ค์ด์‹ญ์‹œ์˜ค."

profile
์–ด๋ ค์šธ์ˆ˜๋ก ๊ธฐ๋ณธ์— ๋ฏธ์น˜๊ณ  ์—ด๊ด‘ํ•˜๋ผ
post-custom-banner

28๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 8์›” 7์ผ

์ ์ ˆํ•œ ์˜ˆ์‹œ + ์งค ๋•๋ถ„์— ๊ธ€์ด ์ˆ ์ˆ  ์ฝํžˆ๋„ค์š”๐Ÿ‘ ์ฝ”ํ‹€๋ฆฐ์— ๋Œ€ํ•œ ์• ์ •์ด ๋Š๊ปด์ง‘๋‹ˆ๋‹คโ€ผ

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 7์ผ

๋„์›€์ด ๋งŽ์ด ๋˜๋Š” ๊ธ€์ด๋„ค์š” ~๐Ÿ˜ƒ

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 7์ผ

์ฝ”ํ‹€๋ฆฐ์— ์• ์ •์ด ์ •๋ง ๋„˜์น˜์‹œ๋„ค์š”....!!!!! ๊ธ€๋„ ์ˆ ์ˆ  ์ž˜ ์ฝํžˆ๊ณ  ์ข‹๋„ค์š”๐Ÿ˜ƒ

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 7์ผ

์ฝ”ํ‹€๋ฆฐ ์˜์—…๊ธ€์„ ์ง„์งœ ๋งŽ์ด ๊ทธ๋ฆฌ๊ทœ ์˜ค๋ž˜(์•ˆ๋“œ๋กœ์ด๋“œํ•˜๋˜ ๋•Œ๋ถ€ํ„ฐ ์Šคํ”„๋งํ•˜๋˜ ์ง€๊ธˆ๊นŒ์ง€) ๋ดค๋Š”๋ฐ ์˜์—…๋ ฅ์€ ์ด๊ธ€์ด ์ œ์ผ ์ข‹๋„ค์š”.

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 7์ผ

์—ฐ์ž‘ ๊ฐ‘์‹œ๋‹ค~!

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 8์ผ

์ž๋ฐ” ์Šคํ”„๋ง ๊ฐœ๋ฐœ์ž์ธ๋ฐ ์ฝ”ํ‹€๋ฆฐ ๊ณต๋ถ€์— ๊ด€์‹ฌ์ด์žˆ์–ด์„œ ๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ์ฝ”ํ‹€๋ฆฐ์ž…๋ฌธ์— ์žˆ์–ด์„œ ๋„์›€์ด๋˜๋Š” ๊ฐ•์˜๋‚˜ ์ •๋ณด๊ฐ€ ์žˆ์„๊นŒ์š”? (๊ธ€ ์ฝ๊ณ  ์˜์—…๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค)

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 10์ผ

sum() ์—์„œ "fun sum(a: Int, b: Int) = a + b" ์ด๊ฒŒ ๋” ๋‹ค์ด๋‚˜๋ฏนํ•˜์ง€ ์•Š์„๊นŒ์š”...? ์ค„์ธ ํ•จ์ˆ˜๋Š” return ํƒ€์ž…์ด void๋กœ ๋˜์–ด์žˆ์–ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ ์ง€๋„...

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 11์ผ

์–ธ์  ๊ฐ€ ๋ฐฐ์šฐ๊ฒ ๋‹ค ์ƒ๊ฐ๋งŒํ•˜๊ณ  ์‹ค์ฒœ์€ ๋ฏธ๋ค„๋‘์—ˆ๋˜ ํ•™์ƒ์ž…๋‹ˆ๋‹ค
์œ ๋จธ๋Ÿฌ์Šคํ•˜๊ณ  ๋จธ๋ฆฌ์— ์™์™๋ฐ–ํžˆ๋Š” ์„ค๋ช…๋•๋ถ„์— ๋‹ค์‹œํ•œ๋ฒˆ ์ฝ”ํ‹€๋ฆฐ์„ ๋ฐฐ์›Œ์•ผ๊ฒ ๋‹ค ์ƒ๊ฐํ•˜๊ฒŒ๋˜๋„ค์š” ใ…Žใ…Ž
์ข‹์€๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜๐Ÿ˜

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 12์ผ

์ €,, ์ฝ”ํ‹€๋ฆฐ ์ข‹์•„ํ–ˆ๋„ค์š”? ๐Ÿ˜

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 12์ผ

๋ญ”๊ฐ€ java๋ฅผ javascriptํ™” ์‹œ์ผœ๋†“์€๊ฑฐ๊ฐ™์€ ๋ฌธ๋ฒ•์ด๋„ค์š”

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 13์ผ

์ฝ”ํ‹€๋ฆฐ์˜ ํŠน์ง•์„ ํ•œ๋ˆˆ์—!
์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 8์›” 17์ผ

๊ฐ„๊ฒฐ์„ฑ์—์„œ ์˜ค๋Š” ์ข‹์€ ์ ๋„ ์žˆ์ง€๋งŒ,
์ž…๋ฌธ ์–ธ์–ด๋กœ๋Š” ์•ˆ ์ข‹์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•ด์š”!
์ ์  ์ถ”์ƒํ™”๋˜๊ณ  ์ƒ๋žต๋˜๊ณ  ์žˆ๋Š” ์‹œ๋Œ€์— ์‚ด๊ณ  ์žˆ๋Š” ์ง€๊ธˆ,
์–ด๋Š์ •๋„ ๊ธฐ์ดˆ๋ฅผ ๋‹ฆ์€ ๋‹ค์Œ ์ฝ”ํ‹€๋ฆฐ์„ ์ ‘ํ•˜๋Š”๊ฑด ์ •๋ง ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ,
๊ธฐ์ดˆ๊ฐ€ ์—†๋Š” ๋น„์ „๊ณต์ž ์ž…์žฅ์—์„  ์–‘๋‚ ์˜ ๊ฒ€์ด ์•„๋‹๊นŒ์š”! ใ…Žใ…Ž
๋˜ํ•œ ์ž๋ฐ”๋„ 8๋ถ€ํ„ฐ @Functional Interface ์™€ NPE ์— ๋Œ€ํ•œ Optional ๋“ฑ์„ ์ œ๊ณตํ•˜๊ณ 
10๋ถ€ํ„ฐ๋Š” var ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.! (์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž…์ด ๊ฒฐ์ •๋จ)
๋„ˆ๋ฌด ์•ˆ์ข‹๊ฒŒ ๋ฐ”๋ผ๋ณด์ง€ ๋ง์•„์ฃผ์„ธ์šฉ!
์ข‹์€ ๊ธ€ ์ž˜๋ดค์Šต๋‹ˆ๋‹ค! ๐Ÿ˜Š๐Ÿ˜Š

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2022๋…„ 3์›” 9์ผ

ใ…‹ใ…‹ใ…‹๋ณด๋Š”๋‚ด๋‚ด ๋„ˆ๋ฌด ์žฌ๋ฐŒ๊ฒŒ ๋ดค์Šต๋‹ˆ๋‹ค! ํฅ๋ฏธ๊ฐ€ ์ƒ๊ธฐ๋„ค์š” ใ…Žใ…Ž

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2022๋…„ 9์›” 13์ผ

์šฐ์™€ ๋ฐ”๋กœ ์ฝ”ํ‹€๋ฆฐ ๊ณต๋ถ€ํ•˜๋Ÿฌ ๊ฐ‘๋‹ˆ๋‹ค~

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ