[4팀 김수민] Chapter 2-1. 클린코드와 리팩토링 - #50
Conversation
…tatusElementUpdate 코드 정리
|
배낄래요. |
|
오 수민님 코드 왜케 깔끔해요 |
| const updateTuesdayBadge = (isTuesday, subTotalAfterDiscount) => { | ||
| const tuesdaySpecialElement = document.getElementById('tuesday-special'); | ||
| if (isTuesday && subTotalAfterDiscount > 0) { | ||
| tuesdaySpecialElement.classList.remove('hidden'); | ||
| } else { | ||
| tuesdaySpecialElement.classList.add('hidden'); | ||
| } | ||
| }; |
There was a problem hiding this comment.
페어4팀 코드 리뷰
상태에 따라 UI를 업데이트하는 부분을 어떻게 처리할지 고민이 많았는데, 다른 분들은 어떻게 하셨는지 궁금해요!
제가 한 건 리액트스럽지 않은 방법인 것 같아서(..) ㅎㅎ
There was a problem hiding this comment.
React스럽지 않은 방법이라고 말씀해주셨는데, 수민님이 생각하신 React 스러운 방법은 어떤건가요??
There was a problem hiding this comment.
className으로 hidden, show 처리 하는 거 좋다고 생각해요. 지금은 바닐라니까 돔을 뺐다 꼈다 하면 렌더링이 되어야 하고, 중요하지 않은(단순 UI 같은 경우)는 css 하는 게 더 간편하다고 생각이 듭니다. hidden이라는 클래스가 어떤 css를 바라보는지는 모르겠지만..! 만약 접근성을 따진다고 하면 aria-hidden도 넣어 주면 어떨까요오?
There was a problem hiding this comment.
@eveneul 제가 여쭤봤던 건 className에 따라 처리하는 방식이 괜찮은지는 아니었고,
상태 변경에 따른 UI 업데이트를 별도의 함수가 담당하는 구조를 말씀드린 거였어요!
There was a problem hiding this comment.
전체적인 코드를 보진 못했지만,
updateCartUI 내부에서 로직을 전체구현하는 것보단 분리되는 것이 더 좋아보여서 저는 괜찮아보입니다!
지금 생각이 드는건, 특정 행동 시 명확히 UI가 변경되는 것을 알 수 있다면, 저는 어느 방향이든 괜찮다고 생각이 드네요~!
There was a problem hiding this comment.
저도 비슷하게 했던 것 같아요!
지금처럼 CSS로 처리하는게 DOM 조작이 적어서 효율적일 것 같아서 그렇게 했습니다.
DOM 조작을 최소화 한다는 점에서는 방식은 다르더라도 오히려 리액트가 추구하는 방향과 가까울 수 있을것 같아요!
(제가 잘 못 이해한 걸 수도 있지만요...!)
There was a problem hiding this comment.
저는 상태를 스토어로 관리했어요! dispatch action이 돌아가고 나면 상태와 관련된 element 렌더링을 다시 시키는 흐름으로 UI 업데이트를 했숩니다! original main 코드가 여기저기서 UI를 변경하는 게 머리 아파서 싸악 모아버렸는데요. 큰 흐름이 명확해서 전체적으로는 낫밷이었지만 사용 범위가 좁은 지역 상태값도 스토어에 포함되어서 불필요하게! 불필요한 부분까지! 렌더링 될 때가 있도라구요 수민님 코드 보다보니 갑자기 반성 타임 됨 헤헤
There was a problem hiding this comment.
개인적인 의견으로는, "React스럽게 구현한다"는 건 단순히 컴포넌트처럼 구조화하는 걸 넘어서, React 내부에 내장된 생명주기, 상태 변화 감지, 렌더링 최적화 같은 선언적 프로그래밍 흐름을 구현해야 한다는 뜻이라고 생각해요.
하지만 이번 과제는 바닐라 JS 기반이라 그런 내부 코어 로직까지 구현하는 건 현실적으로 쉽지 않았고, 그래서 저는 컴포넌트 단위로 책임을 나누고, UI와 비즈니스 로직, 이벤트 핸들러를 분리해서 최대한 구조적인 코드로 작성하려고 했어요.
오히려 이번 과제는 React 흉내내기가 아니라, MVC처럼 역할을 나누고 클린한 코드를 지향하는 방향이 더 핵심이 아니었나 싶어요!
저도 처음에 "각 컴포넌트에서 이벤트 핸들러를 가지고 있으면 좋지 않나? 이를 어떻게 해결할 방법이 없을까?"를 고민을 했는데, 어느순간 스스로가 React에 너무 매몰된 사고를 하고 있지는 않나?하는 생각이 들긴 햿어요..
There was a problem hiding this comment.
아! 이해했어요. 병준 님 말씀처럼 지금 상황에서는 수민 님이 작성해 주신 코드가 제일 적합하고 깔끔한 구조라고 생각돼요.
과제 배포링크
https://nimusmix.github.io/front_6th_chapter2-1/
과제 체크포인트
기본과제
심화과제
과제 셀프회고
과제를 하면서 내가 제일 신경 쓴 부분은 무엇인가요?
1. 팀 코드 컨벤션 정하기
월요일 코어 타임에 모여서 페어팀 코드 컨벤션을 정했어요.
내가 안 쓰는 컨벤션의 경우에는 거침없이 NAGA를 외치며.. 정해보았는데요!
정해진 컨벤션은 다음과 같았습니다.
"singleQuote": true
찬성 의견: 쉬프트 키까지 쓰는 게 손가락이 아프다, 쌍따옴표는 다른 데에서 사용하기 위함이다
반대 의견: 처음부터 쌍따옴표로 개발을 시작해서 그런지 너무 익숙해졌다.
"tabWidth": 2
찬성 의견: 2가 근본이다.
반대 의견: (수줍어서 말을 하지 않으셨다.)
정말 딱 한 분 제외하고 모든 사람이 2였지만 용훈님이 수줍게 4를 외쳤다. 따가운 시선들이 한 곳으로 모였다.
"semi": true,
찬성 의견: 코드 블럭과 코드 블럭 사이 경계가 잘 보인다, 근본이다.
반대 의견: 없는 게 더 깔끔하다.
여기서 반대한 게 저였는데, 깔끔해서..도 있지만 자바스크립트가 알아서 잘 해주기 때문에!
발생하지 않을 문제를 혹시 발생할 수도 있다는 이유만으로 성가시게 할 필요 없다고 생각했습니다~
→ 세미콜론은 사용하는 것으로 결론이 났다.
var, 동등연산자(==)를 사용할 것인가?
찬성 의견이 없었다. 찬성한다면 젭 나가라고 호통쳤다.
변수에 축약어를 사용할 것인가?
찬성 의견: 변수, 함수명이 길면 읽느라 업무 시간 다 끝난다. 모두가 알 수 있는 건 줄여 쓰는 것도 나쁘지 않다.
반대 의견: 쉽게 알아보지 못한다.
저는 원래는 축약어파였어요! 그게 깔끔하고 치기도 쉬우니까요~
그런데 저는 영어에 좀 친숙한 사람이었기에,, 제가 쓰는 축약어를 다른 사람들이 모를 때도 많았어요
모두가 아는 축약어는 어디까지인가? 어떤 축약어는 써도 되고 어떤 축약어는 안 되는가?
이런 걸 고민하기 보다 어떤 동료든 알 수 있도록, 적어도 몰랐을 때 검색해서 쉽게 찾을 수 있도록 하는 것이 중요하다 생각이 들었고
NO 축약어파로 바꼈습니다!
찬성 의견: 가독성 향상
반대 의견: 반대 의견이 없었음.
위와 같은 코드 컨벤션을 정하고 prettier와 esLint를 다같이 통일해서 사용했습니다!
2. 중간 코드 리뷰
: 화요일 테오 Q&A 세션 이후 팀원들은 혼돈의 도가니에 빠졌었습니다 (ㅋㅋ)
그래서 다들 어떻게 진행하고 있는지 확인하고 모르는 것은 공유하기 위해서 중간 코드 리뷰를 진행했어요.
한 사람씩 돌아가면서 화면 공유를 키고, 어디까지 진행했는지, 앞으로는 어떻게 할 예정인지 이야기를 나눴습니다.
다들 이 시간을 통해 혼란했던 마음을 다잡고 과제를 할 수 있었어요 !!
과제를 다시 해보면 더 잘 할 수 있었겠다 아쉬운 점이 있다면 무엇인가요?
DOM API를 그대로 사용한 부분이 아쉬워요!
: 제가 과제를 진행한 순서는
변수 선언자 및 변수명 정리->위에서부터 아래로 읽으며 코드 정리였는데,좀 더 리액트스럽게 하는 아키텍처에 신경썼다면 좋았을텐데 하는 아쉬움이 있습니다!
AI를 많이 사용했던 점이 아쉬워요!
: 클린코드는 항해 플러스 시작하기 전부터 가장 기대했던 주차인데,
제 손으로 하나하나 뜯어고치지 못했단 점이 너무나 아쉽습니다ㅠㅠ
리뷰 받고 싶은 내용이나 궁금한 것에 대한 질문 편하게 남겨주세요 :)
테오가 doubleQuote를 선호하는 이유는 무엇인가요? 궁금해요 !!!