관심사 / 책임
컴포넌트
커스텀 훅
기타
리덕스의 성능이 좋을까? - 리덕스가 context api보다 규모가 큰 프로젝트에 많이 사용하는 것 같은데, 성능이 더 좋아서 사용하는 것일까? 성능이 중요할 때 리덕스를 사용하라는 글은 없다. 있어도 잘못된 글이라고 한다. 단지 리덕스를 많은 기업에서 사용하는 이유는 코드가 일관되기 때문이다. 어떠한 개발자가 개발을 하더라도 액션 타입, 액션 함수, 리듀서를 만들어야 하고, 코드가 비슷해질 수 밖에 없다. 그로 인해 규모가 큰 프로젝트에서는 일관성이 중요하고, 그것 때문에 리덕스를 사용하는 것이지 리덕스의 성능 때문에 사용하는 것은 아니다.
context api와 리덕스를 많이 비교하는데, 이 둘의 차이는 직접 사용해보면서 느끼는 것이 가장 좋을 것 같다. 어떠한 글을 보더라도 글쓴이의 주관이 들어가기 때문이다.
if vs && - if문과 &&연산자의 차이점이 무엇일까? if문은 문이기 때문에 값을 할당할 때 사용할 수 없다. 하지만 &&연산자는 표현식이기 때문에 값을 할당할 수 있다. 또한, if문에서 조건식을 만족하지 않으면 실행을 하지 않지만 &&연산자는 값을 항상 평가하게 된다. if문은 조건식을 사용할 수도 있기 때문에 가독성도 더 좋다.(변수를 활용할 수 있기 때문)
따라서 값을 평가해야 하는 경우에는 &&를 사용하고, 아닌 경우에는 if를 사용하자.
가독성 - 코드를 구현할 땐 가독성을 신경쓰되 바뀔 일이 많지 않은 코드는 한 눈에 보이도록 코드를 짜는 것이 더 좋을 수도 있다.
함수의 역할 및 비용 - 함수가 너무 길어진다면 함수가 너무 많은 일을 하고 있는지 살펴볼 필요가 있다. 함수가 많다면 컴포넌트가 너무 많은 책임을 지고 있는지를 확인해 볼 필요가 있으며, 컴포넌트 내에 선언한 함수가 리렌더링 시 계속 만들어지고 사라지고 하는 것은 엄청나게 작은 비용이기 때문에 고려할 사항이 아니다.
고차함수 사용 - 이벤트리스너와 같은 고차 함수에는 콜백 함수를 전달할 때, 해당 콜백 함수가 실행된다. 이 때문에 따로 함수를 정의해주는 방법을 사용하곤 하는데, 고차 함수를 활용해 함수를 만들게 되면 이벤트 리스너 내에서도 인자를 바로 넘겨줄 수 있다.
const higherOrderFunction = (param) => () => console.log(param);
<Component onClick={higherOrderFunction('Good')} />