-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[6팀 김봉준] [Chapter 2-1] 클린코드와 리팩토링 #34
base: main
Are you sure you want to change the base?
Conversation
totalCost = 0; | ||
tally = 0; | ||
const cartItems = shoppingCart.children; | ||
let subTot = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
외부에 선언된 변수(subTot)를 함수가 직접 변환시키고 있는데요, 외부 상태를 건드리지 않고 함수 내에서 같은 입력값에 대해 같은 결과를 반환하는 순수 함수를 이용해 보셨음 좋겠습니다!
function calculateCart(cartItems, itemList) {
return cartItems.reduce(
(acc, cartItem) => {
const curItem = itemList.find(item => item.id === cartItem.id);
if (!curItem) return acc;
const qty = parseInt(
cartItem.querySelector("span").textContent.split("x ")[1]
);
const itemTot = curItem.price * qty;
// 할인율 계산
const discountRates = {
p1: 0.1,
p2: 0.15,
p3: 0.2,
p4: 0.05,
p5: 0.25,
};
const disc = qty >= 10 ? discountRates[curItem.id] || 0 : 0;
// 누적 합산
acc.subTot += itemTot;
acc.totalCost += itemTot * (1 - disc);
acc.tally += qty;
return acc;
},
{ subTot: 0, totalCost: 0, tally: 0 } // 초기값
);
}
// 호출 시
const { subTot, totalCost, tally } = calculateCart(cartItems, itemList);
@@ -0,0 +1,12 @@ | |||
import { IItem } from "../types/types"; | |||
|
|||
export const itemList: IItem[] = [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DISCOUNT_RATE, DISCOUNT_PROBABILITY 와 동일하게 대문자로 ITEM_LIST로 지으면 어땠을까요??
같은 constants 라고 구분할 수 있도록이요! ㅎ
]; | ||
}); | ||
|
||
setInventory((prevInventory: IItem[]) => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
setCart, setInventory 관련해서 반복되는 코드들이 보이는데 공통함수를 만들어서 뺴는 것은 어떨까요??😆
심화과제 : React로 리팩토링
과제 체크포인트
기본과제
심화과제
과제 셀프회고
과제에서 좋았던 부분
과제를 하면서 새롭게 알게된 점
명령령으로 되어있던 코드를 선언형으로 짜야 리액트로 리팩토링을 할 때 편하다고 학습 메이트 분과 멘토님이 말씀해주셨는데, 선언형에 대한 개념을 정확하게 이해하지 못했던 것 같습니다. 멘토링 시간에 확실히 이해했으나 이미 너무 과제 진행을 많이 해버려서, 이번 주 토요일에 다른 분들 과제 수행한 것들을 보면서 다시 코드를 작성해 볼 생각입니다.
과제를 진행하면서 아직 애매하게 잘 모르겠다 하는 점, 혹은 뭔가 잘 안되서 아쉬운 것들
개념이 이해가 안 되는 건 아닙니다. 함수명 잘 짜고, 함수 단일 원칙이라던가, 조건문 단순화, 부수효과 제거 등은 사실 모르지 않는데, 이게 막상 코드를 짜려고 하면 잘 안 되는게 문제입니다 ㅎㅎㅎㅎㅎㅎㅎㅎㅎ 이건 금방 고쳐지지 않을 것 같고, 꾸준히 의식하고 다른 분들 코드를 보면서 학습하는 수밖에 없을 것 같습니다.
리뷰 받고 싶은 내용이나 궁금한 것에 대한 질문
이전 과제들에 비해 시간 투자를 많이 하지 못 한것이 아쉬운데 ㅜ, 테오의 토요일 과제 리뷰와 best Practice과제 보면서 학습해볼 생각입니다. 궁금한 점은 멘토링 시간에 다른 분들 질문을 포함해서 어느 정도 해결 된 것 같습니다. 다시 복기해보면서 학습하고 있습니다.