Untitled

코드 냄새 하나와 리팩터링 두 개

고객사에게 메일을 보내는 함수 리팩토링 필요

이메일을 보낼 때 수백개가 넘는 고객군을 구분해서 보내야 한다.

기존

function emailsForCustomers(customers, goods, bests) {
    var emails = [];
    for(var i = 0; i < customers.length; i++) {
        var customer = customers[i];
        var email = emailForCustomer(customer, goods, bests);
        emails.push(email);
    }
    return emails;
}

반복문을 forEach() 함수로 변경

function emailsForCustomers(customers, goods, bests) {
    var emails = [];
    forEach(customers, function(customer) {
        var email = emailForCustomer(customer, goods, bests);
        emails.push(email);
    });
    return emails;
}

고객 배열을 받아 이메일 배열을 반환하므로 map()을 사용하면 좀 더 쉽게 할 수 있다.

예제를 통해 map() 함수를 도출하기

다른 함수들을 보면 다 비슷비슷하다.

Untitled

함수 본문을 콜백으로 바꾸기