The State of Immutability - Lee-hyuna/33-js-concepts-kr GitHub Wiki
The State of Immutability
νλ μλ°μ€ν¬λ¦½νΈμμ λΆλ³μ±μ λ¨κ±°μ΄ μ£Όμ μ λλ€. μ΄ μ£Όμ κ° μ§κΈ μΈκΈ°λ₯Ό λκ³ μλ μ΄μ λ κΈ°λ₯ νλ‘κ·Έλλ° ν¨λ¬λ€μ λλ¬Έμ λλ€. λΆλ³ λ°μ΄ν°λ λμ°λ³μ΄κ° μμΉ μλ λΆμμ©μΌλ‘ κ°μ£Όλλ κΈ°λ₯μ μ κ·Όλ²κ³Ό λ°μ νκ² μ°κ²°λμ΄ μμ΅λλ€. λ μ΄μ κ³ λ―Όνμ§ λ§κ³ , λμ°λ³μ΄μ±κ³Ό λΆλ³μ±μ λν μΈλΆμ¬νμ μ΄ν΄λ΄ μλ€.
μλ°μ€ν¬λ¦½νΈμμ λ³κ²½ν μ μλ λ°μ΄ν° ꡬ쑰
μλ°μ€ν¬λ¦½νΈμ λ€μν μΈμ΄μμ assignλ¬Έμ λ κ°μ§ λ°©μμΌλ‘ μλν©λλ€. κΈ°λ³Έ μ ν(λ¬Έμμ΄, μ«μ, λΆμΈ)μ λν ν λΉμ κ°μ μ λ¬νλ©°, λ³΅ν© μ ν(κ°μ²΄)μ κ²½μ° μ°Έμ‘°(λ©λͺ¨λ¦¬ ν¬μΈν°)λ₯Ό μ λ¬ν©λλ€. λ³΅ν© μ νμ κ²½μ°, λ³κ²½ μ¬νμ μ€μ λ‘ λμΌν μ₯μμ λν ν¬μΈν° μΌ λΏμ΄λ―λ‘ λͺ¨λ λ³κ²½ μ¬νμ μν₯μ λ―ΈμΉ©λλ€. μ€μ§ κΈ°λ³Έ μ νλ§ λΆλ³νλ©° μμ νκ² λ³κ²½ν μ μμΌλ©°, κΈ°λ³Έ μ νμ μ μΈν λͺ¨λ μ νμ κΈ°λ³Έμ μΌλ‘ λ³κ²½ κ°λ₯ν©λλ€.
κ·Έλ λ€λ©΄ λΆλ³μ μμ μ΄ λ¬΄μμΈμ§ μκ°ν΄ λ΄ μλ€. μλ°μ€ν¬λ¦½νΈλ μ΄μ²λΌ λΆλ³μ±μ κ°μ§ κ²μ΄ μλλΌ, 볡ν©μ¬λ£λ₯Ό μν λΆλ³ ꡬ쑰λ μκ³ , μ¬μ§μ΄ κ·Έκ²μ μΈμ΄μ λμ ν λ―Έλμ κ³νλ μμ΅λλ€. μΈμ΄κ° μ κ²½ μ°μ§ μλλ€λ©΄ μ μ κ²½μ μ¨μΌ ν©λκΉ?
μ λ’°κ° μ€μνκΈ° λλ¬Έμ μ κ²½μ μ¨μΌ νλ€.
λ³κ²½ κ°λ₯ν ꡬ쑰λ₯Ό μ¬μ©νλ κ²μ μ λ’° λΆμ‘±μ μ΄μ μ λλ€. λͺ¨λ μ½λ λΆλΆμμ μ°Έμ‘°μ λν μ‘μΈμ€λ₯Ό ν΅ν΄ λ³νμ μν ν μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈλ λ§€μ° μ΅ν΅μ±μ΄ μμ΅λλ€. μ¦, μ΄λ€ κ°μ²΄λ μ¦μμμ μμ ν λ€λ₯Έ 무μΈκ°λ‘ λ³ν λ μ μμ΅λλ€. ν μ€μμλ κ°λ₯Ό λνλ΄λ κ°μ²΄κ° λ μ μκ³ λ€μ μ€μμλ κ°κ° λμΌλ‘ λ³μ΄ λ μ μμ΅λλ€. μ΄λ¬ν μν©μ μν ννμ μ½λ μμΈ‘ κ°λ₯μ±μ λν λλ €μμ μ¦κ°μν΅λλ€.
λμ°λ³μ΄μ λν λͺ λ§λ
λμ°λ³μ΄μ κΈ°νλ 무μΈκ°κ° λ³νμ§ μμ κ²μ΄λΌκ³ 보μ₯νμ§ λͺ»ν©λλ€. μ΅μ μ μλ리μ€λ μΌλΆ κ΅¬μ‘°κ° μμ© νλ‘κ·Έλ¨μ κ°λ³ λΆλΆμμ μ¬μ©λ λ λ°μν©λλ€. κ·Έλ¬λ©΄ ν κ΅¬μ± μμμ λͺ¨λ λ³νμ΄ λ€λ₯Έ κ΅¬μ± μμμ λ²κ·Έλ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ¬ν λ²κ·Έλ λ¬Έμ μ μμΈμ΄ μ€λ₯μ λ²μλ₯Ό λ²μ΄λκΈ° λλ¬Έμ μΆμ νκΈ°κ° μ΄λ ΅μ΅λλ€. μ΄κ²μ λμ λΆμμ©μ μμ λλ€.
λμ°λ³μ΄λ λΆμμ©μ μμΈμ΄λ€.
λΆμμ©μ νμ¬ λ²μ μΈλΆμ μν₯μμ£Όλ λͺ¨λ κ²μ
λλ€. μ½λμ λ§μ λΆλΆμ΄ λμΌν μ°Έμ‘°λ₯Ό λ€λ£¨λ κ²½μ°, λͺ¨λ λ³κ²½μ΄ λͺ¨λ λΆλΆμ μν₯μμ€λλ€. μ½λκ° λ¨λ¨ν κ²°ν©λκΈ° μμνκ³ , λ¨μΌ μ±
μ κ·μΉμ λ°λ₯΄λ λμ μ½λ μ‘°κ°μ΄ λ°μνκ³ , λ²μ λ°μμ μ μ΄λμ§ μλ μΌμνκ³ μκΈ° λλ¬Έμ λΆμμ©μ΄ μ’μ§ μμ΅λλ€. μμΉ μλ μ ν리μΌμ΄μ
μ λ λμ μ ν리μΌμ΄μ
컨ν
μ€νΈμ μν₯μ λ―ΈμΉ©λλ€.
λ°μμ λ§μ§λ κ²μ νμ μννλ©° μμΈ‘ν μμλ κ²°κ³Όλ₯Ό μ΄λν©λλ€. λ²κ·Έκ° λ°κ²¬λλ©΄ μ§λ¬Έμ΄ μ κΈ°λ©λλ€ - λ³κ²½λ κ³³μ μ΄λμ
λκΉ? μ νν 무μμ΄ λ°λ μμ΅λκΉ? λꡬλ μ°Έμ‘°μ μ‘μΈμ€ ν μ μμ΅λκΉ? κ·Έλ¬λ λ³νμ μμ¬λ μμΌλ©° μ½κ² λ΅ν μ μμ΅λλ€.
λμ°λ³μ΄λ νμ¬ μν λ§ μ 곡νλ€.
νλμ μ°Έμ‘°κ° μ¬λ¬ λ² λ³κ²½λλ©΄ μ΄λ¬ν λ³κ²½ μ¬νμ΄ κΈ°λ‘λμ§ μμ΅λλ€. μ΄μ μνμ μ‘μΈμ€ ν μ μμ΅λλ€. κ°μ²΄ μμ±μ λ³κ²½νλ©΄ μ€μ λ‘ λ©λͺ¨λ¦¬λ₯Ό λ€μ μ°κ³ , μ΄μ κ°μ μμ€λ©λλ€. λ³νμ λν μ§μ λΆμ‘±κ³Ό κ΄λ ¨λ λ¬Έμ λ λμΌν λ³κ²½ κ°λ₯ν ꡬ쑰μ λν μ‘μΈμ€ κΆνμ κ°μ§ μ¬λ¬ κ³³μμ μ¦κ°νκ³ μμ΅λλ€. κ·Έ μκ°μ κ΅¬μ‘°κ° μ΄λ»κ² λ³ννλμ§ μ μ μμ΅λλ€.
μλμ°¨ κ°μ²΄μμ μμ κ±° κ°μ²΄λ‘ ννλ₯Ό λ°κΎΈλ κ² - μ£Όμ°¨μ₯ λͺ¨λν°λ§ μμ!
λμ°λ³μ΄λ μμΈ‘ν μ μλ μνμ μμΈμ΄λ€.
λμ°λ³μ΄ μ μ°¨μ λ§μ λ¨κ³κ° ν¬ν¨λμ΄ μλ€λ©΄ λ§μ μμ±μ΄ λ³κ²½λκ³ μλ κ²½μ° μ μ°¨κ° μ€κ°μμ μ μ΄κ° κ°λ₯ν©λλ€. μ΄ κ²½μ° μνλ μ΄μ μ ν¨ν λ²μ μΌλ‘ λ‘€λ°±ν΄μΌνλ©°, κ·Έλ μ§ μμ κ²½μ° μνλ μ μ μλ λͺ¨μμΌλ‘ λ¨μ΅λλ€. μ μ μκ³ μμΈ‘ν μμλ μνλ μ΄ κ΅¬μ‘°κ° μλΉλλ μ₯μμμ μΆ©λλ‘ λ³ν μ μμ΅λλ€.
λ°λ©΄ λμ°λ³μ΄λ κΈ°μ΅μ μ¬μ¬μ©νκ³ λΉ λ¦ λλ€.
κ·Έλ μ΅λλ€. λμ°λ³μ΄κ° κΈ°μ΅μ μ¬μ¬μ©νκ³ μμ΅λλ€. λμ°λ³μ΄λ μ±λ₯κ³Ό λ©λͺ¨λ¦¬ μ¬μ©μ μ 리ν©λλ€. κ·Έλ¬λ μ°λ¦¬λ 21μΈκΈ°μ μ΄κ³ μμΌλ©° λ©λͺ¨λ¦¬κ° μ λ ΄νκ³ νλ‘ νΈμλ κ°λ°μ μκ·λͺ¨ κ·λͺ¨μμλ μ΄λ€ κ°μ²΄κ° λ³΅μ¬ λ μ§ μ¬λΆλ μ€μνμ§ μμ΅λλ€. λΆλ³ 볡μ¬λ³Έμ΄ μ±λ₯μ μν₯μ λ―ΈμΉ μνμ μμ΅λλ€. κ°λΉμ§(Garbage) 컬λ ν°λ μ°Έμ‘°λ₯Ό μ¬μ©νμ§ μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ λμ λ λΆνμν λ©λͺ¨λ¦¬ μ μ μ λν΄ κ±±μ ν νμκ° μμ΅λλ€.
... λͺ ννκ² λ§νλ©΄ νλ‘ νΈ μλ μΈ‘λ©΄μ λ¬Έμ λ₯Ό μΈκΈνκ³ μμ§λ§, λ©λͺ¨λ¦¬κ° κ°μ₯ μ€μν λ€λ₯Έ λ§μ μ’ λ₯μ μννΈμ¨μ΄κ° μλ€λ κ²μ μ΄ν΄ν μ μμ΅λλ€.
μ°λ¦¬λ λ§μ κΈ°μ΅μ κ°μ§κ³ μλ€.
Place Oriented Programming β PLOP
Rich Hickeyκ° μ μ ν μ©μ΄λ μ ννκ² κ°λ³μ±μ μ¬μ©νλ κ°κ°μ ν¬μ°©ν©λλ€. κ°μ λν 보μ¦μ΄ μ‘΄μ¬νμ§ μλλ€λ©΄, μ°λ¦¬μ κ°μ²΄λ λ¨μ§ λ©λͺ¨λ¦¬μμλ μ₯μμ λν ν¬μΈν° μΌλΏμ λλ€. κ°μ²΄λ λͺ¨μ Aμμ μμ±λμμ§λ§ μ½λ μ€ν μ€μ λͺ¨μ B, C, D λ±μΌλ‘ λ³νλμμ΅λλ€. λ³μλ κ°μ΄ μλ λ©λͺ¨λ¦¬λ₯Ό λνλ λλ€.
λΆλ³μ΄λ κ°μ κ΄ν κ²μ λλ€.
μμ... https://youtu.be/-6BsiVyC1kM
λΆλ³μ΄λ λ§ κ·Έλλ‘ λμ°λ³μ΄κ° λ μμλ κ²μ΄κ³ , λλ λ λ©λ¦¬ λμκ° μ μμ΅λλ€. λμ°λ³μ΄λ λ¨μ§ μ‘΄μ¬νμ§ μμ΅λλ€. λ³μλ λ¨μΌ λ³κ²½ λΆκ°λ₯ν κ°μ λνλ λλ€. valueA! == valueBμ΄λ―λ‘ κ°μ λ³νμ΄ μμ΅λλ€. κ°μ μ¬μ€μ΄λ©° μ¬μ€μ λ³νμ§ μμ΅λλ€. νΉμ κ°μΌλ‘ μ μΈ λ κ²μ΄ μμΌλ©΄ λλ¨Έμ§ μ½λλμ΄ μ νν κ°μ΄ μλ€λ κ²μ μμ ν μ λ’°ν μ μμ΅λλ€. μ΄ λ³΄μ¦μ λΆμμ©μ΄μκ³ μμΈ‘ν μμλ μνκ° κ΄μ°°λμ§ μκ³ , κ°μ₯ μ€μν κ²μ μ λ’°λ₯Ό μ¬κ΅¬μ±νλ κ²μ΄λ©°, μ½λμ μΌλΆλΆμ΄ μ½κ° λ€λ₯Έ ꡬ쑰λ₯Ό νμλ‘νλ€κ³ νλλΌλ μλμ ꡬ쑰μ μλμ§ μκ³ μ체 λ²μ μΌλ‘ μλνλ€λ κ²μ λλ€. κ°μ μ¬μ©νλ©΄ λ³΄μ¦ λ° νκ³ ν κ³μ½μ΄ μ 곡λ©λλ€. λ©λͺ¨λ¦¬ ν¬μΈν°λ₯Ό μ¬μ©νλ©΄ λ³΄μ¦ λ° κ³μ½μ΄ μ 곡λμ§ μμ΅λλ€.
λ³κ²½ν μμλ ꡬ쑰μ λ³κ²½ κ°λ₯ν ꡬ쑰
Value Oriented Programming β VOP
PLOPμλ λ¬λ¦¬ VOPλ κ°μ κ΄ν κ²μ λλ€. μ½λλ λ©λͺ¨λ¦¬μ ν¬μΈν°κ° μλ κ°μμ μλν©λλ€. λ€λ₯Έ κ°μ λνλ΄λ κ²μ λΆλ¦¬λ ꡬ쑰 μ¬μΌν©λλ€. κ°μ μμ±μμ νκΈ°κΉμ§ λ³κ²½λμ§ μμ΅λλ€. λͺ¨λ μμν κΈ°λ₯ μΈμ΄λ κ°μ΄ μ§ν₯μ μ λλ€.
μ΄λ€ μ°¨μ΄λ μ κ°μ λ°μλμ΄μΌ ν©λλ€.
λ³νλ λμ°λ³μ΄λ₯Ό μλ―Ένμ§λ μμΌλ©°, λ³νμ μλ―Έλ λ³νλ₯Ό λ°μν μλ‘μ΄ λ²μ μ μνλ₯Ό μμ±ν©λλ€. κ·Έλ¬λ λͺ¨λ κ²½μ°μ μ μ© κ°λ₯ν©λκΉ? μ΄κ²μ μΌλΆ κ°λ°μ, λλ, λΆλ³μ λ¬Έμ κ° μμ΅λλ€. λ¬Έμ λ λκ·λͺ¨ λ°μ΄ν° μμ§κ³Ό κ°μ΄ ν° κ²μ΄ μ‘΄μ¬ν λ μμλλ©° μμ λ³ν λ§μ΄ μνλμ΄μΌν©λλ€. κ·Έλ° κ²½μ°μ μλ‘μ΄ κ΅¬μ‘°λ₯Ό λ§λλ κ²μ΄ μλͺ»λμλ€κ³ λκ»΄μ§ λ, κ·Έ κΈ°μ΅μ΄ λ§€μ° λΉν¨κ³Όμ μΈ λ°©μμΌλ‘ μ¬μ©λλ κ²μΌλ‘ λκ»΄μ§λλ€. μ μ λ§λ‘ λ°μ΄ν°μ μλ‘μ΄ κ΅¬μ‘°λ₯Ό λ§λ€ νμκ° μμ΅λλ€.
μ€μ λ‘ νλμ μμλ§ μΆκ°ν΄μΌνκ±°λ νλμ νλλ₯Ό λ³κ²½ν΄μΌνλ€λ©΄?
κ·Έλ¦¬κ³ μ΄ μ§λ¬Έμ λν λ΅μ λ³νλ κ΅¬μ‘°κ° λ€λ₯Έ κ°μ λνλ΄κΈ° λλ¬Έμ λλ€. μ΄μ κ³Ό λ³κ²½λ λ 컬λ μ μ λμΌνμ§ μμ΅λλ€. κ°μ ν¬κΈ°μλ λΆκ΅¬νκ³ μ¬μ€μ λ³κ²½ λ μ μμΌλ©° κ°μ λ³ν μ μλ μ¬μ€μ λλ€.
λ°λΌμ λΉμ μ΄ κ°μ κ΄μ μμ μκ°νκΈ° μμνλ€λ©΄, κ·Έλ° μμ¬μ λΉμ μ κ΄΄λ‘νμ§ λ§μμΌ ν©λλ€. μμ¬μ΄ μ¬λΌμ§μ§ μμΌλ©΄ Immutable.jsκ° λ€μ μ₯μμ κ·Έμ λν λͺ λ§λλ₯Ό ꡬνκ² λ©λλ€.
Value Oriented Programming in JavaScript
VOPλ μλ°μ€ν¬λ¦½νΈλ‘ ꡬν λ μ μμ΅λλ€. μ μ λ§νλ―μ΄ μλ° μ€ν¬λ¦½νΈμλ λΆλ³ κ΅¬μ‘°κ° μμ§λ§ μμΉκ³Ό κ·μΉμ λ°λΌ λΆλ³μ±μ λ¬μ± ν μ μμ΅λλ€.
κ°μ²΄ κ³ μ (Freeze your objects)
Object.freeze λ©μλλ μΆκ° λ³νμΌλ‘λΆν° κ°μ²΄λ₯Ό μ°¨λ¨ν μμλ κΈ°νλ₯Ό μ 곡ν©λλ€.
const frog = { color: 'green', sound: 'ribbit ribbit' };
Object.freeze(frog);
frog.color = 'red';
frog.sound = 'hau hau';
console.log(frog); // {color: "green", sound: "ribbit ribbit"}
μμ μμ μμλ frog μμ±μ λ³κ²½νλ €νμ§λ§ κ²°κ³Όλ κ°μ²΄κ° λ³κ²½λμ§ μμμ΅λλ€. Object.freezeκ° κ°μ²΄ νλμμλ§ λμ°λ³μ΄λ₯Ό μ°¨λ¨νλ€λ μ¬μ€μ λ§€μ° μ€μν©λλ€. μ¦ μμ freezeμ λλ€. μμ κ²μ κ°μ²΄ λ΄λΆμ 볡μ‘ν κ΅¬μ‘°κ° μ¬μ ν λ³μ΄ λ μ μμμ μλ―Έν©λλ€.
λ³κ²½ μμ λμ μ μΈμ€ν΄μ€ λ§λ€κΈ°
// object
const claraFrog = { color: 'green', name: 'Clara' };
const juliaFrog = { ...claraFrog, name: 'Julia' };
// array
const week = ['monday','tuesday','wednesday','thursday','friday','saturday', 'sunday'];
const betterWeek = [...week];
betterWeek.shift(); // week without monday :)
μ€νλ λ μ°μ°μλ λ°°μ΄ λ° κ°μ²΄μμ μ κ°μ λ§λλ λ° μ¬μ©ν μ μμ΅λλ€. κ·Έκ²μ λ§€μ° νΈλ¦¬ν λꡬμ΄λ©°, μ½λλ λ§€μ° λͺ ννκ² λ³΄μ λλ€. λ³κ²½λ λ΄μ©κ³Ό μ¬μ¬μ© λ λ΄μ©μ λ³Ό μ μμ΅λλ€.
μ€νλ λ μ°μ°μκ° μμ 볡μ¬λ₯Ό μννλ©΄ λ£¨νΈ κ°μ²΄ μ°Έμ‘°κ° λ³κ²½λμ§λ§ λͺ¨λ νλ(κ°μ²΄) λλ ν(λ°°μ΄)μ΄ λ€μ μ¬μ©λλ€λ μλ―Έμ λλ€. λνμ΄ λ°©λ²μ΄ ν¨μ¨μ μΈ λ°©μμΌλ‘ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ€λ κ²μ μλ―Έν©λλ€.
λ³κ²½ λΆκ°λ₯ν λ°μ΄ν° ꡬ쑰 μ¬μ©
λ° μ€ν¬λ¦½νΈλ μμμμ λ²μ΄λ λΆλ³ ꡬ쑰λ₯Ό κ°μ§κ³ μμ§ μμ§λ§ μ 3μ ꡬνμ΄ μμ΅λλ€. κ°μ₯ μΈκΈ°μλ κ²μ Immutable.jsμ moriμ λλ€. λ λ€ κ²μ νΈλ¦¬ ꡬ쑰μ μΌμ’ μΈ trieλ°μ΄ν° ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘ν©λλ€. μ΄λ¬ν ꡬ쑰λ 볡μ¬μμ΄ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νλ λ§€μ° ν¨μ¨μ μΈ λ°©λ²μ νμ©ν©λλ€.
trieλ₯Ό μ¬μ©νλ κ°μΈμ μΈ κ΄μ μμ λ³Ό λ, μ€μ λ‘ λ³΅μ‘ν ꡬ쑰μμλ λ°μ΄ν° κ΅¬μ‘°κ° μ μ© ν μ μμ΅λλ€. λ€λ₯Έ 무μ보λ€λ λλ μ€νλ λ μ°μ°μλ₯Ό μ νΈν©λλ€. κ·Έλ¦¬κ³ μ±λ₯ λ¬Έμ κ° λνλ λκΉμ§ μ 3μ μ루μ μ κ³ λ €νμ§ μμ κ²μ λλ€.
λΆλ³ κΈ°λ₯μ΄ ν¨μ νλ‘κ·Έλλ°μ λ¬Άμ¬ μμ΅λκΉ?
μ ν μλλ€. VOPλ λ€λ₯Έ νλ‘κ·Έλλ° ν¨λ¬λ€μμμ μ¬μ©λ μ μμ΅λλ€. μμ¦μλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ λ¬Έκ°μ μ λμκ° λΆλ³μ μν μ μ₯ κ°μ²΄μ λν΄ μ΄μΌκΈ°νκ³ μμ΅λλ€. μ¬κΈ° VOPλ ν¨μν νλ‘κ·Έλλ°μμμ κ°μ μ΄μ μ μ 곡ν©λλ€. μνκ°μλ κ°μ²΄ λλ λΆλ³ μνλ₯Ό κ°μ§ κ°μ²΄λ κ·Έκ²μ μλΉνλ λͺ¨λ λΉμ¬μμ λν΄ λ³΄μ¦κ³Ό μ λ’°λ₯Ό μ 곡ν©λλ€. λΆλ³ κ°μ²΄λ λͺ¨λ μ’ μμ±μ μμ±μμ μ λ¬ν΄μΌνκΈ° λλ¬Έμ λ¨μΌ μ± μ κ·μΉμ μ¦νν©λλ€. Immunabilityλ κ°μ²΄ λΌμ΄λΈ μ¬μ΄ν΄ μ€ μν λ³κ²½μ μ°¨λ¨ν©λλ€. μ¦, κ°μ²΄κ° μ²μλΆν° λκΉμ§ λ³κ²½ λΆκ°λ₯ν μνλ‘ μ μ§λλ€λ κ²μ νμ ν μ μμ΅λλ€.
setterλ₯Ό μμ΄ λ²λ¦¬κ³ OOPμ λΆλ³ κ°μ²΄λ₯Ό λ§λλλ€. μ΄ μ£Όμ μ λν νλ₯ν μ΄μΌκΈ° μλμ, Yegor Bugayenkoκ° μλ° μΈμ΄μ κ΄λ ¨μ΄ μμ΅λλ€.
μμ https://youtu.be/p7m7_iiqaHI
λΉμ μ λΆλ³μ μ€λΉκ° λμ ¨μ΅λκΉ?
κ³ λ €ν΄μΌ ν λͺ¨λ κ²λ€ - λΆλ³μ±μ κ·μΉκ³Ό μμΉμ μν΄ λ¬μ± λ μ μμ΅λλ€. μλ° μ€ν¬λ¦½νΈλ λ³κ²½λμ§ μμ λΆλ³μ±μ κ°μ§κ³ μμ§ μμΌλ―λ‘, νΌλΈλ¦ μ°μ°μμ μΈλΆ λΌμ΄λΈλ¬λ¦¬κ° μ½κ² ꡬνν μ μμ΅λλ€. λΆλ³μ±μ΄ κ·μΉμ κ΄ν κ²μ΄λΌλ©΄ λͺ¨λ κ²μ΄ κ°λ°μμ μμ λ¬λ € μμ΅λλ€. κ°μ κ°μ λ³Έλ€λ©΄μ΄ μ΄ μκ°λΆν°λ κ·Έ λμ°λ³μ΄κ° λΉμ μ μμ©μ μμ΄μ ΈμΌ ν©λλ€.
κ·Έλ¬λ λ¬Έμ λ λμ μ΅κ΄μ μμΌλ©°, λμ μ΅κ΄μ λλΆλΆ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ λΉλ‘―λ©λλ€. λμ μ΅κ΄μ μ°λ¦¬μ λ§μ μμ μμΌλ©°, μ°λ¦¬μ νΌλΆ μλ μμ΅λλ€. κ°μ²΄μ setterμ κ°μ λμ κ΄ν, κ°μ²΄ μνλ₯Ό λ³κ²½νλ λ©μλ, μν μΈ κ°μ²΄, κ±°λν λ€νμ± κ°μ²΄ λ±μ μλͺ»λ κ²μΌλ‘ κ°μ£Όλμ΄ λ€μλ μ¬μ©λμ§ μμμΌν©λλ€.
μκ°μ λ°©μμ λ°κΎΈκ³ κ°μ κ°μ 보μμμ€. λΆλ³μ±μ μ ννλ κ²μ μμΈ‘ κ°λ₯νκ³ ν¨μ¨μ μ΄λ©° λ²κ·Έκ° μ μ νλ‘κ·Έλ¨μ ν₯ν ν° λ°κ±Έμμ λλ€.