개발회고📚

[패스트캠퍼스] Rubber duck debugging : 두 번째

코드사냥꾼 2021. 8. 6. 22:05

두 번째 과제는 가격 별 상품 추천하는 프로그램을 구현하는 것이었다. 사용자가 가지고 있는 돈의 액수를 입력받아 해당 금액에 가장 근접한 가격의 상품을 리턴하면 된다.

초반에 작성한 코드는 다음과 같다 

[실제 본인 구현부]

// 아래에 getItemByAmount 함수를 작성하세요.
const getItemByAmount = (data, amount) => {
    // 사용자의 입력 유효값 범위 지정: 숫자가 아닌 경우, 0인 경우 null
    if(amount === false || amount === 0) {
        return null;
    }

    // 살 수 있는 상품을 저장하기 위한 변수
    let index;

    for(let i=0; i<data.length; i++) {
        // 조건: 사용자가 입력한 금액보다 상품의 가격이 더 비싼 경우
        if(amount < data[i].price) {
            // continue: 해당 항목을 제외하고 그 다음 항목과 비교하기 위함
            continue;
        } else {
            // 그 외의 경우 사용자가 상품을 살 수 있기 때문에 해당 상품의 인덱스 번호가 저장됨
            index = i;
         }
    }
    // 상품이 존재한다면 해당 상품의 데이터를 출력하고, 그게 아니라면 null을 출력
    return index != null ? data[index] : null;
};

 

코드에 대한 리뷰어님께서 조언해주신 내용은 다음과 같다.

  • let 키워드 대신 const 사용하기
  • for문보다는 foreach, filter와 같은 함수 사용하기

 

아쉬웠던 점 

함수 사용에 소극적이었던 것이 너무 아쉽다. 다음 번 기능을 구현할 때에는 적절한 함수가 있는지 찾아가며 적극 활용할 수 있도록 해봐야겠다.

 

팀원들과 공유하며 알게된 점

  • 확실히 함수를 적극적으로 사용하면 코드가 간결해진다.
[팀원 분의 코드]

function getItemByAmount(amount) {
  const targetItem = data
    .filter((item) => amount - item.price >= 0)
    .sort((a, b) => b.price - a.price);

  return targetItem ? targetItem[0] : null;

 

잘한 점

  • return 값 사용 시 삼항 연산자를 활용하였다.

 

'개발회고📚' 카테고리의 다른 글

2022년, 지난 날의 회고  (0) 2023.02.12
[패스트캠퍼스] Rubber duck debugging : 첫 번째  (0) 2021.07.30