관심사 분리의 중요성! 정확한 요일별 일정을 계획해 보자
이번주는 공부 보다는 배드민턴에 더 집중했던 것 같다.
새로운 취미가 생기게 되어 순식간에 너무 빠져 버렸고...🏸
남는 시간에 공부를 하려고 하는 마음을 반성했다. 😥
이걸 극복하기 위해서는 정확히 운동하는날, 공부하는날 요일 계획을 세울 필요성을 느꼈다.
이번주 강의는 관심사 분리를 위한 연습을 위한 내용이 였으며,
그동안 관심사 분리에 대해 깊게 생각한적이 없다보니 조사를 해보고싶었다.
따라서, 코드가 더욱 명료해지고, 재사용성, 유지보수에 용이 하고, 테스트 코드를 작성하기 쉬워진다.
VAC 패턴
VAC : View Asset Component의 약자로 렌더링에 필요한 JSX와 스타일을 관리하는 컴포넌트를 의미
VAC 패턴 : View 컴포넌트에서 JSX 영역을 Props Object로 추상화하고,
JSX를 VAC로 분리해서 개발하는 설계 방법
관련 자료 : https://wit.nts-corp.com/2021/08/11/6461
1. 함수를 작성할때 어떤 행위를 했을 때 이벤트가 발생하는 것과,
실제로 무엇을 할 지 분리해서 작성하는 것이 좋다.
ttps://jaketrent.com/post/naming-event-handlers-react
// before
<button type="button" onClick={() => handleIncrease(1)}>
// after
const handleClick = (value) => {
increaseCount();
};
<SingleIncrease onClick={handleClick} count={count} />
2. 다른 결과(리스트가 존재하지 않거나...등)따라 다른 렌더링 하고 싶을때,
삼항연산자를 통해 작성하는 것 보다 비지니스 로직 부분에 예외케이스를 명확하게 두어
빠르게 종료(return)해서 다음 코드를 읽을 필요없게 하는 것이 좋다.
// before
{todos.length > 0
? (todos.map((todo, i) => (
// ...생략
)))
: (<p>할 일이 없어요!</p>)}
// after
const isEmpty = (arr = []) => arr.length === 0;
if (isEmpty(todos)) {
return <p>할 일이 없어요!</p>;
}
3. 역할이 분명한 로직은 함수를 작성해서 충분히 활용하는 것이 좋다.
// before
const { length } = todos;
const lastIndex = length - 1;
const idx = length === 0 ? 1 : todos[lastIndex].idx + 1;
// after
const lastIndexDerive = (arr) => arr[arr.length - 1];
const idx = (lastIndexDerive(todos)?.idx ?? 0) + 1;
지금 마음가짐을 유지하고 끝까지 최선을 다해서 성장하길!🔥