책을 읽으며 든 의문들…

리액트 개발자가 왜 객체지향 프로그래밍을 사용해야하는가?


1) 리액트는 UI를 하나의 객체처럼 다룬다.

리액트의 컴포넌트는 state를 가지고, 메서드(핸들러 함수, 커스텀 훅, 이벤트 처리 함수, useEffect 등)를 포함하며, 다른 컴포넌트와 props를 통해 상호작용한다. 따라서 객체지향적 사고로 컴포넌트를 설계하면 재사용 가능한 컴포넌트를 쉽게 만들 수 있고, 복잡한 UI 구조를 더 직관적으로 분리하고 관리할 수 있다.

2) 복잡한 상태 관리와 비즈니스 로직 추상화

상태 관리 로직을 별도의 객체로 분리하면 리액트 컴포넌트는 UI에, 비즈니스 로직은 객체에서 처리되어 보다 가독성 및 유지보수가 용이해진다.

실제로 zustand와 같은 상태관리 라이브러리 또한 객체지향 패러다임을 토대로 한다. 예로, zustand의 스토어는 객체지향적인 관점에서 보면 클래스 처럼 동작함을 알 수 있다. 스토어는 상태와 상태를 조작하는 메서드를 캡슐화하고, 외부 코드에서는 이 스토어를 호출하여 상태를 읽거나 변경한다.

const useCounterStore = create((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
  decrement: () => set((state) => ({ count: state.count - 1 })),
}));

객체지향 프로그래밍과 함수형 프로그래밍을 적절히 사용하기


1) 객체지향 프로그래밍과 함수형 프로그래밍은 공존 가능한가?

책에서도 언급된 내용이지만, 클래스를 사용한다고 객체지향 프로그래밍을 하고 있다고 말할 수 없다.

그저 Class를 사용하고 있다고 해서 객체지향 프로그래밍이 아니고, 데이터를 분류하여 복잡도를 낮추고 각 요소에 역할을 부여하고 상호간 협력관계가 형성되도록 개발하려 하는 것이 객체지향 프로그래밍이라는 것