279p ~ 302p
π κ°μ
ν¨μ λ³Έλ¬Έμ μ½λ°±μΌλ‘ λ°κΎΈκΈ° -> κ²°κ΅, κ³ μ°¨ν¨μλ₯Ό νμ©ν 리ν©ν λ§κ³Ό κ°μ λ§.
1. with ν¨ν΄
2. wrap ν¨ν΄
// μ) saveUserData() ν¨μ μ€ν μλ¬ μ λ‘κ·Έλ₯Ό λ¨κΈ°κ³ μΆμ
// μλ μ½λ
try {
saveUserData(user);
} catch (error) {
logToSnapErrors(error);
}
// withLogging
function withLogging(f) {
try {
f();
} catch(error) {
logToSnapErrors(error);
}
}
withLogging(function() {
saveUserData(user);
});
// wrapLogging
function wrapLogging(f) {
return function (arg) {
try {
f(arg);
} catch {
logToSnapErrors(error);
}
}
}
var saveUserDataWithLogging = wrapLogging(saveUserDataNoLogging);
with ν¨ν΄μ λ¨μ : λͺ¨λ μ½λμ μλμΌλ‘ withLogging() ν¨μλ₯Ό μ μ©ν΄μΌ ν¨. μ΄λ€ λΆλΆμ κΉλ¨Ήκ³ μ μ© μν μ λ μμ.
wrap ν¨ν΄μ ν¨μ ν©ν 리(factory) λ₯Ό μ¬μ©ν κ². ν¨μλ₯Ό 리ν΄νλ ν¨μλ ν¨μ ν©ν 리.
π κ³ μ°¨ ν¨μ μ 리
π ν¨μν λ°λ³΅
// μλ³Έ ν¨μ
function emailsForCustomers(customers, goods, bests) {
var emails = [];
forEach(customers, function(customer) {
var email = emailForCustomer(customer, goods, bests);
emails.push(email);
});
return emails;
}
// map νμ©
function emailsForCustomers(customers, goods, bests) {
return map(customers, function(customer) {
return emailForCustomer(customer, goods, bests);
});
}
// μλ³Έ ν¨μ
function selectBestCustomers(customers) {
var newArray = [];
forEach(customers, function(customer) {
if (customer.purchases.length >= 3)
newArray.push(customer);
});
return newArray;
}
// filter νμ©
function selectBestCustomers(customers) {
return filter(customers, function(customer) {
return customer.purchases.length >= 3;
});
}
ν¨μλ₯Ό 리ν΄νλ ν¨μλ ν¨μ ν©ν 리 factory μ κ°μ΅λλ€.
μλμΌλ‘ μ ννλ μ½λλ₯Ό ν¨μλ‘ λ§λ€ μ μμ΅λλ€.
ν¨μ 곡μ₯.
λ§μ ν¨μν νλ‘κ·Έλλ¨Έλ κ³Όλνκ² λͺ°λνκΈ° μ½μ΅λλ€.
... (μ€λ΅) ...
κ³ μ°¨ ν¨μλ‘ λ§λ μ’μ λ°©λ²μ μ°Ύμλ€λ©΄, μ§κ΄μ μΈ λ°©λ²κ³Ό νμ λΉκ΅ν΄ 보μΈμ. μ΄λ€ λ°©λ²μ΄ λ μ’μκΉμ?
- μ½λκ° λ μ½κΈ° μ¬μ΄κ°μ?
- μΌλ§λ λ§μ μ€λ³΅ μ½λλ₯Ό μμ¨ μ μλμ?
- μ½λκ° νλ μΌμ΄ 무μμΈμ§ μ½κ² μ μ μλμ?
μ΄λ° μ§λ¬Έλ€μ λμΉλ©΄ μ λ©λλ€.
κ³Όλͺ°μ μ£Όμ. νμ μ€μ μ£Όμ, μ€μ©μ£Όμ.