μ΄λ€ μμμ κ²°κ³Όκ°μ μ μ₯νκΈ° μν΄μ μμλ³μλ₯Ό μ¬μ©νκ³ μλ€λ©΄,
μμμ λ½μλ΄μ λ©μλλ‘ λ§λ€κ³ , μμλ³μλ₯Ό μ°Έμ‘°νλ κ³³μ μ°Ύμ λͺ¨λ λ©μλ νΈμΆλ‘ λ°κΎΌλ€. μλ‘ λ§λ λ©μλλ λ€λ₯Έ λ©μλμμλ μ¬μ©λ μ μλ€.
μμμ λ½μλ΄μ λ©μλλ‘ λ§λ€κ³ , μμλ³μλ₯Ό μ°Έμ‘°νλ κ³³μ μ°Ύμ λͺ¨λ λ©μλ νΈμΆλ‘ λ°κΎΌλ€. μλ‘ λ§λ λ©μλλ λ€λ₯Έ λ©μλμμλ μ¬μ©λ μ μλ€.
double basePrice = _quantity * _itemPrice; if (basePrice > 1000) return basePrice * 0.95; else return basePrice * 0.98;
λ₯Ό λ€μκ³Ό κ°μ΄ μμ±νλ€.
if (basePrice() > 1000) return basePrice() * 0.95; else return basePrice() * 0.98; ... double basePrice() { return _quantity * _itemPrice; }
μμ μλ λ§€μ° κ·Ήλ¨μ μΌλ‘ 보μΌμ§λ λͺ¨λ₯Έλ€. νμ§λ§ μμ μλ₯Ό λ§€μ° λ³΅μ‘ν μμ€ν
μ μΌλΆλΆμ΄λΌ κ°μ νκ³ μκ°ν΄λ³΄κΈΈ λ°λλ€. μμλ³μλ₯Ό μ¬μ©νλ μ½λλ ν΄λΉ λΈλμμλ§ μ κ·Ό κ°λ₯νκΈ° λλ¬Έμ, κΈΈμ΄μ§λ μ±ν₯μ΄ μλ€. μ΄λ¬ν μμλ³μλ₯Ό μ§μ λ©μλ(query method)λ‘ λ°κΏμΌλ‘μ¨ μ΄λκ³³μμλΌλ, μμλ³μμμ μ¬μ©λ μ 보λ₯Ό μ»μ μ μκ³ , ν΄λμ€ μ½λλ λ κΉλν΄μ§λ€.
κ·Έλ¬λ,
νλ‘κ·Έλλ° κ²½λ ₯μ΄ μλ μ¬λμΌμλ‘, μ΄λ¬ν μ¬μ€μλ λμλ₯Ό νμ§λ§ νΌν¬λ¨Όμ€λ₯Ό μ°λ €ν΄μ 꺼리λ κ²½ν₯μ΄ μλ€. 'λμΌν μ°μ°μ μ μ΄λ κ² μννλκ±°μ§?' , 'μ΄λ¬ν λΈλμ μ§μμ μ΄κΈ° λλ¬Έμ μμ λ³μ μ¬μ©μ λ¬Έμ κ° λμ§ μμ!' .
νμ§λ§,
κ·Έλ¬ν μ°λ €λ ' λ¨μ§ κ·Έλ΄μ§λ λͺ¨λ₯Έλ€. ' λΌλ κ°μ μΌ λΏμ΄λ€. λꡬλ μ€μ λ‘ νλ‘νμΌλ§(profiling)ν΄λ³΄κΈ° μ κΉμ§λ μ μ μλ€. μ€μ λ‘ λ¬Έμ κ° λλμ§ μλμ§λ.
μ΄λμ λ μμ€μ μ€λ₯Έ νλ‘κ·Έλλ¨ΈμΌμλ‘, λ°λ³΅μ μΌλ‘ μ¬μ©λλ κ°μ λν΄ μμλ³μλ₯Ό μ¬μ©νκ³ μ΄λ¬ν μ΅μ ν(?)λ₯Ό λλ¦λλ‘ μννλ € νλ€. κ·Έλ¬λ, μ΄λ¬ν λ―Έμμ μΈ μ΅μ νλ κ²°κ³Όμ μΌλ‘ κ±°μμ μ΅μ νμ κΈ°νλ₯Ό λ°ννκ² νλ€. μ¬μ§μ΄ μ΅μ
μ κ²½μ°λΌλ μμλ³μλ₯Ό λ€μ λ£λ μΌμ μ½λ€(λ¬Όλ‘ , νλ‘νμΌλ§ ' κ²°κ³Ό ', ' μ€μ λ‘ ' νΌν¬λ¨Όμ€μ μ¬κ°ν λ¬Έμ λ₯Ό μ£Όλ κ²½μ°λΌλ©΄).
μ΄λ¬ν λ°©λ²μ μ¬μ©νλ©΄μ λΆκ°μ μΌλ‘ μ»μ μ μλ μ₯μ μ΄ νλ λ μλ€. μ€μ λ‘ λμμ΄ λ μ§ μλ μ§ λͺ¨λ₯΄λ μ΅μ νλ₯Ό νλλ° μλ μκ°μ μ μ½ν μ μλ€. μμλ³μ μ¬μ©λΏ μλλΌ μ΄λ¬ν λ―ΈμΈν λΆλΆμ μ‘°μ μ, ν΄λκ³ λ³΄λ©΄ λ³λ‘ μλν΄λ³΄μ΄μ§ μλ μΌμ, ν λλ μμ§ λͺ»νκ³ κ²°κ΅ μκ°μ λλΉνκ² λλ€. λμ΄μΌλ³΄λ©΄ λμ μ΄λ¬ν λ
Έλ ₯μ΄ μ λλ‘ ν¨κ³Όκ° μμλμ§λ λͺ¨λ₯Έλ€. μ? νλ‘νμΌλ§ ν΄λ³΄μ§ μμμΌλκΉ. λ¨μν μμ€ν
μ λ 빨리 λ릴 μ μμμ§λ λͺ¨λ₯Έλ€λ μ°λ €μμ μμ±ν κ²μ΄μμΌλκΉ. DoTheSimplestThingThatCouldPossiblyWork
κ°μΈμ μΌλ‘ 리νν λ§ μμ μ μ½λ€κ° μλΉν 좩격μ λ°μλ€. μ³μ λ°©λ²μ΄λΌκ³ μκ°ν λ΄μ©μ΄ μ€μ λ μ³μμ§λ λͺ¨λ₯Έλ€λΌλ μ¬μ€μ΄μκ³ , νλμ λ무λ₯Ό μ ν€μ°λ©΄ μ 체μ μΌλ‘λ λμ΄ λλ€λΌκ³ μκ°ν λ΄μ©μ΄ μ€μ λ‘λ λ ν° κ°λ₯μ±μ λ³΄μ§ λͺ»νκ²νλ μλͺ»λ μ΅κ΄μ΄μλ€λ μ¬μ€μ΄ λλ₯Ό μ¨ν΅ νλ€μ΄ λμλ€. λ€μ κ±Έμλ§λ₯Ό μμνκ² λ λλμ΄λ€. μμ μ νμ λ°λ·κ°μμ μ‘°κ°λ₯Ό μ€λ μ΄λ¦°μμ΄μ λΉμ νλ Isaac Newtonμ μ΄μΌκΈ°κ° λ μ€λ₯Έλ€.
--μ΄μ μ°
I do not know what I may appear to the world, but to myself I seem to have been only a boy playing on the seashore, and diverting myself in now and then finding a smoother pebble or a prettier shell than ordinary. Whilst the great ocean of truth lay all undiscovered before me. --Isaac Newton
Refactoring