🎯  목표

💬 더 나은 코드를 위한 고민과 피드백

1. 가독성을 위한 네이밍

1) 내 함수는 정말 한 가지 기능만 하는가? 그리고 함수의 이름은 적절한가?

function showMenuItems() {
    const menuItems = getMenuItems();
    ...
    menuItems.forEach(item => {
        console.log(item);
    });
    ...
}

위 코드는 아래와 같이 분리될 수 있습니다.

function logMenuItems(menuItems) {
    menuItems.forEach(item => {
        console.log(item);
    });
}

function showMenuItems() {
    const menuItems = getMenuItems();
    ...
    logMenuItems(menuItems);
    ...
}

2) 중간 변수 도입: 의미가 명확해진다면 변수명은 길어도 괜찮습니다.

const menuItems = getMenuItems();
menuItems.map(item => {
    if (item.isSoldOut) {
        ...
    }
})
const menuItems = getMenuItems();
const soldOutMenuItems = menuItems.filter(item => item.completed)

if (soldOutMenuItems) {
    ...
}

복잡한 계산이 필요하다면 함수로 분리하면 좋습니다.

2. return 구조

1) 빠른 실패: fast fail (early return)

빠른 실패를 하게끔 코드를 구현하면 depth를 줄일 수 있습니다. depth를 늘리는 것은 코드를 복잡하게 만드는 습관 중 하나이기 때문에 의식적으로 depth를 줄이는 것이 좋습니다.

if (성공로직 || isTrue) {
    ...
}

// 아래와 같이 빠른 실패를 하면 코드의 의도와 예외 조건이 명확해지고 나중에 분리하기도 쉽습니다.

if (실패로직) {
    return
}
... // 성공 로직