토스 모닥불 EP2 보고 든 생각
객체지향(OOP)에서 중요한 것은 결국 객체이지, 클래스(Class)가 아니다.
평소 FP적인 리액트에 OOP 요소를 어떻게 하면 잘 섞을 수 있는지 고민을 많이 했다. 비즈니스 로직이 복잡해지다 보니, 주문 정보나 유저 정보 드의 비즈니스적으로 크리티컬한 데이터를 안전하면서도 읽기 쉽고 사용하기도 쉽게 재설계하는 방법에 대해 고민하다가 생각이 OOP까지 이르렀다.
OOP를 하기 위해서는 Class를 어떻게 써야할지 또 생각했다. 상태에 반응하여 컴포넌트 함수를 재실행하여 리렌더링하는 리액트의 특성 상, 함수 내에서 생성된 클래스 인스턴스를 제대로 수거하지 않으면 메모리 누수 문제가 발생하기 쉽다. 리액트에서 발생하는 대다수의 메모리 누수 이슈가 클래스와 관련되어 있기도 하다.
스타트업 "반려생활"에서는 valtio라는 라이브러리를 활용해서 proxy 기반 OOP React를 구현해서 사용한다고 하는데, proxy나 useSnapShot을 사용하는게 영 익숙치않고 어색했다.
한참을 React에서 FP와 OOP를 어떻게 잘 섞을 수 있을까를 고민하다가, 토스의 [함수형 프로그래밍, 프론트엔드 개발에 진짜 도움 될까?] 영상을 보게 되었다. 객체지향(OOP)에서 중요한 것은 결국 객체이지, 클래스(Class)가 아니다. 아! 내가 너무 클래스에 매몰되어 있었구나. 그렇다면 각각 데이터를 담는 커스텀 훅을 만들어서, 생성자 메서드와 같은 역할을 하는 생성자 함수를 만들고, 데이터를 검증하는 함수도 만들고, 각종 유틸 함수를 담아내면, 외부 컨텍스트와 데이터 간의 의존성을 제거함으로써, 이것을 객체지향에서 말하는 "객체"라고 볼 수 있지 않을까?
사실 OOP에 대한 배움이 전무해서 스스로 판단할 수는 없을 것 같다.
그래도 몬가..
몬가...
왔다.