-
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
[15팀 차현빈] [Chapter 2-1] 클린코드와 리팩토링 #51
base: main
Are you sure you want to change the base?
Conversation
react랑 닮게 만들기 위한 빌드업
let appState = { | ||
productList: [ | ||
{ id: "p1", name: "상품1", val: 10000, qty: 50 }, | ||
{ id: "p2", name: "상품2", val: 20000, qty: 30 }, | ||
{ id: "p3", name: "상품3", val: 30000, qty: 20 }, | ||
{ id: "p4", name: "상품4", val: 15000, qty: 0 }, | ||
{ id: "p5", name: "상품5", val: 25000, qty: 10 }, | ||
], | ||
lastSel: null, | ||
bonusPts: 0, | ||
totalAmt: 0, | ||
itemCnt: 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.
하나의 state로 관리하는 것 좋아보이는데요?
이렇게 생각하게 된 이유가 있을까요?
const updateCart = () => { | ||
const cartItems = document.querySelector( | ||
`#${ID_BY_COMPONENT.CART_ID}` | ||
).children; | ||
let subTot = 0; | ||
appState.totalAmt = 0; | ||
|
||
//장바구니에 들어있는 상품들의 수, 금액 계산 | ||
Array.from(cartItems).forEach((cartItem) => { | ||
const { itemTot, disc } = getCalcCartItem(cartItem); | ||
appState.totalAmt += itemTot * (1 - disc); | ||
subTot += itemTot; | ||
}); | ||
|
||
const discRate = getAdditionalDiscountRate(subTot); | ||
updateTotalAmt(discRate); | ||
updateStockInfo(); | ||
updateBonusPts(); | ||
}; |
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.
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.
주석이 깔쌈하게 잘 되는거 너무 보기 좋네요!
특히 jsDoc 쓴거 짱입니다
이번 주 고생하셨습니다!
과제 체크포인트
기본과제
심화과제
과제 셀프회고
과제에서 좋았던 부분
이번 과제를 진행하면서, 그동안 회사에서 사용되던 변수명 규칙이 애매하고 이해하기 어려운 경우가 많았던 점을 돌아보게 되었습니다. 특히, 최근에 한 함수에 if문이 30개씩 들어가 있는 거대한 함수들 때문에 리팩토링의 필요성을 절실히 느꼈었지만. 함께 일하는 동료들과 어떤 기준으로 규칙을 세우고, 이를 어떻게 적용할지 경험이 부족해 망설였던 부분도 있었습니다.
하지만 이번 과제를 진행하면서 페어팀과 컨벤션을 만들어보고, 그 컨벤션을 최대한 지키려고 노력하는 과정에서 처음부터 완벽할 수는 없더라도 방향을 잡고 지속적으로 개선해 나가면 된다는 확신을 얻을 수 있었습니다.
그리고 그 느낌으로 바로 회사 코드에 배운 내용을 적용해 보려다 보니 이번 주는 과제에 쏟을 시간이 부족했던 점이 너무나도 아쉬웠습니다. 그래도 이번 과제가 방향성을 잡는데 도움을 주고 생각만 하고 있었던 리팩토링을 시작해 볼 수 있게 해줬다는 점에서 너무나 유익했습니다.
리뷰 받고 싶은 내용이나 궁금한 것에 대한 질문
이번 과제에서 중요하게 생각하고 수행하려고 한 부분은
각각의 부분에서 에메한 부분들이 있었는데
분리하면 코드가 더 모듈화되고 가독성이 좋아질 수 있지만, UI 로직만 따로 빼는 것이 과도한 분리가 되는 것이 아닌가 생각했습니다.
그렇지만 그대로 두면 main() 함수가 UI와 비즈니스 초기화를 한곳에서 처리하기 때문에 흐름이 명확할 수 있지만, 함수가 길어진다는 단점을 갖게 되는 것 같습니다.
이런 상황에서 UI를 그리는 로직을 따로 함수로 분리하는 것이 좋은지, 그대로 두는 것이 좋은지에 대한 기준이 궁금합니다.
updateExistingCartItem()
에서 내부 IF문에서 추상화 수준을 맞춰주려면 if문에 있는 코드를 else문에 있는 함수처럼 묶어주는 것이 좋은 방법일지 아니면 현재처럼 풀어쓰는 것이 더 좋은 방법일지 궁금합니다.