재사용 가능한 컴포넌트를 그만 만드세요
제목부터 자극적인 이 글은 생각보다 정말 순합니다. 우리가 리액트 컴포넌트를 만들면서 마주하는 현실을 있는 그대로 적고 있습니다.
저자는 재사용 가능한 컴포넌트를 만들면서 일종의 반복적인 패턴에 빠졌다고 합니다. 그리고 만족스러웠습니다.
After following a very similar pattern and feeling good about myself, I started wiring up my page.
하지만 재사용을 고려하며 만든 컴포넌트는 재사용되지 않았고 재사용을 고려하다보니 코드는 복잡해지기만 했다고 합니다.
I hadn’t written any of my components based around data.
(그 어떤 데이터도 데이터를 기반으로 작성하지 않았습니다.)
...
Many of those “reusable” components were never reused in the app and many, including my Hero component, never even needed dynamic data.
('재사용 가능한' 대다수의 컴포넌트는 절대 재사용되지 않았고, 심지어 동적 데이터도 필요하지 않았습니다.)
그리고 저자는 재사용 가능한 코드를 작성하는 건 '미래의 가정된 문제를 해결하면서 지금 마주한 어려운 문제를 해결하기를 미루는 것', 즉 일종의 '미루기(procrastination)'라고 봤습니다.
... we humans tend to write code like this as a form of procrastination. Delaying solving the hard problems we have now, by solving the hypothetical problems of the future.
그리고 저자는 재사용 가능한 코드를 작성하고 있다면 '내가 지금 해결해야 하는 문제인지 정직하게 살펴야 합니다.'라고 전합니다.
'오브젝트'의 저자 조영호님도 책에 아래와 같은 말을 남기고 있습니다.
변경은 예상이 아니라 현실이어야 한다. 미래에 변경이 일어날지도 모른다는 막연한 불안감은 불필요하게 복잡한 설계를 낳는다. 아직 일어나지 않은 변경은 변경이 아니다. <오브젝트>, 조영호, 305쪽
더 자세한 내용은 원문을 참고해주세요 :)
댓글
로그인 후 댓글을 남길 수 있습니다.
재사용되는 컴포넌트 만드는건 진짜 고민이 많이 필요한것 같아요.. 제대로 만들거 아니면 왠만하면 안만드는게 답인것 같기두해요. 저는 그래서 잘 만들어진 디자인시스템 따라서 만드는것도 괜찮은것 같아요 ㅎ 예전에 RN 할때는 EVA 디자인 시스템 따라서 컴포넌트 만들어서 쓰기도 했구, 최근엔 Vercel desigin 시스템 잘되어있는 것 같더라구요. 항상 좋은글 공유 감사합니다 준프님!
좋은 경험 공유해주셔서 감사합니다 :)
항상 좋은 인사이트 나눠주셔서 감사합니다! 준프님께서 쓰시는 글들은 항상 대학생 개발동아리 분들께 공유하고 있습니다. 많은 도움이 되고 있어요!!
도움이 되고 있다니 제가 너무 감사합니다 :)
공감합니다. 경험상 최소한의 기능만으로 만들고 재사용이 진짜로 필요할때 한번 더 다듬는게 깔끔한거 같아요. 처음부터 너무 여러가지를 고려할 필요가 없는 것 같습니다.
무조건 재사용 컴포넌트를 만들어야한다는 생각이있었는데... 숲은안보고 나무만봤네요 인사이트 나눠주셔서 감사합니다 😆
컴포넌트는 "재사용"보다는 "요약"에 의미를 둘 때 더 빛이 나는 것 같습니다. 함수 사용하는 것처럼요. 글로 함수 배울 때는 첫번째로 손꼽히는 게 "재사용"이지만 실제로 코드 작성할 때 재사용되는 함수는 몇 개만 정해져 있잖아요. 대다수의 함수는 사실 "요약"이죠. 컴포넌트도 이런 식으로 접근해야 한다고 생각합니다.