Yarn: ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ 'get' ์ ‘๋‘์‚ฌ ์‚ญ์ œ

์— ๋งŒ๋“  2019๋…„ 12์›” 12์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: FabricMC/yarn

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด get์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ด์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

discussion refactor vote

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

JDK์˜ ํ‘œ์ค€์€ immutable์€ ์ ‘๋‘์‚ฌ๊ฐ€ ์—†๊ณ  mutable์€ ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋ณ€์ด๋ฏ€๋กœ getter ๋˜๋Š” setter๊ฐ€ ์—†๋Š” ์ƒˆ ๋ ˆ์ฝ”๋“œ์—์„œ ๋‹ค์†Œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

๋”ฐ๋ผ์„œ ํ˜„์žฌ ํˆฌํ‘œ๋Š” 2:+1: ๋ฐ 7:-1:์ž…๋‹ˆ๋‹ค. 24์‹œ๊ฐ„ ์ด๋‚ด์— ์ถ”๊ฐ€ ํˆฌํ‘œ๋‚˜ ๋Œ“๊ธ€์ด ์—†์œผ๋ฉด ์ด๋ฅผ ๊ฒฐ๊ณผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. Discord peeps ๋งˆ์Œ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๋ณ€๊ฒฝ์„ ์ง€์ง€ํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ get ์ ‘๋‘์‚ฌ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑ๋œ ๋ช‡ ๊ฐ€์ง€ ๊ทœ์น™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

JDK๊ฐ€ ์ด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์ƒ์ ์œผ๋กœ ๋ฏธ๋Ÿฌ๋งํ•ฉ๋‹ˆ๋‹ค.

setter๊ฐ€ ์žˆ์„ ๋•Œ jdk์— get ์ ‘๋‘์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? setter๊ฐ€ ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ ˆ์ฝ”๋“œ getter ๋ฉ”์„œ๋“œ์—๋Š” get ์ ‘๋‘์‚ฌ๊ฐ€ ์—†์ง€๋งŒ setter๊ฐ€ ์—†๊ณ  ์ž ์žฌ์ ์ธ ์ด๋ฆ„ ํ˜ผ๋™์ด ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ์ผ๋ถ€ ์ƒˆ๋กœ์šด jdk getter์—๋Š” get ์ ‘๋‘์‚ฌ๊ฐ€ ์žˆ๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ getter์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์ƒ์ ์ธ ์˜ˆ๋Š” MethodType type() getter ๋ฐ MethodHandle getTarget() getter๊ฐ€ ์žˆ๋Š” invokedynamic ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์–ด์˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋ฉ”์„œ๋“œ ์†์„ฑ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” jdk 7์—์„œ ๋น„๊ต์  ์ตœ๊ทผ์— ๋„์ž…๋œ java.lang.invoke.CallSite ์ž…๋‹ˆ๋‹ค. ์œ ํ˜• ํ•˜๋‚˜๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฐ˜๋ฉด ๋Œ€์ƒ ์œ ํ˜•์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. setTarget(MethodHandle) ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ๋‹ค๋ฅธ ์ตœ์‹  API๋Š” get ์ ‘๋‘์‚ฌ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Java 9์˜ Class.getModule ).

JDK์˜ ํ‘œ์ค€์€ immutable์€ ์ ‘๋‘์‚ฌ๊ฐ€ ์—†๊ณ  mutable์€ ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋ณ€์ด๋ฏ€๋กœ getter ๋˜๋Š” setter๊ฐ€ ์—†๋Š” ์ƒˆ ๋ ˆ์ฝ”๋“œ์—์„œ ๋‹ค์†Œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

Runemoro picture Runemoro  ยท  3์ฝ”๋ฉ˜ํŠธ

Boundarybreaker picture Boundarybreaker  ยท  3์ฝ”๋ฉ˜ํŠธ

Runemoro picture Runemoro  ยท  4์ฝ”๋ฉ˜ํŠธ

copygirl picture copygirl  ยท  6์ฝ”๋ฉ˜ํŠธ

Awakened-Redstone picture Awakened-Redstone  ยท  4์ฝ”๋ฉ˜ํŠธ