요즘 컴포넌트 설계에 대해 관심이 많아졌다. 설계를 잘 하는 개발자
가 되고 싶다는 생각이 든다. 그 이유는 다음과 같다.
설계를 잘 하고 싶다
.잘 흡수하고 스며들고
싶다.내가 하고 싶은 설계는 재사용성을 높여 협업에 도움을 주어서 개발 속도를 향상
시키고, 추후에 유지보수 비용도 줄일 수
있는 설계를 하고 싶다.
내가 이런 생각을 하게 된 계기는 다음과 같다.
복잡한 컴포넌트
가 됨많은 시간이 듬
이런 경험을 하면서 만약 설계를 처음부터 잘 했다면 정말 좋았겠다
라는 생각을 하게 되었고, 설계가 정말 중요하다는 사실을 깨달았다.
설계 기법은 정말 다양하다. 심지어 유명한 디자인 패턴이나 설계 아키텍쳐도 사용하는 기업이나 개인마다 조금씩 의미를 다르게 두어 사용하거나 프로젝트의 성향에 따라 다르게 사용한다.
MVC, MVVM, Container-Presenter, Props Drilling과 FLUX 패턴, Atomic, VAC 패턴
Headless Component, Compound Component, Custom Hook
정말 다양하지만 이러한 패턴들은재사용성을 높이
고 기능과 디자인을 분리
하는 목적을 추구하고 있다는 것이 공통점
이다.
따라서 우선 특정 디자인 패턴, 아키텍쳐 패턴을 사용하겠다는 생각보다는 실제 예시에서 어떻게 재사용성을 높이고 디자인과 기능을 분리할지에 대해 먼저 생각해보았다.
예를 들어 위와 같은 디자인을 받았다고 가정해보자! 가장 먼저 해당 디자인의 기본 요소(Atoms)
를 생각해보면 Input, Button, Text이다. 이렇게 기본 요소를 분리하고 이들을 조합
하여 사용한다면 재사용성을 높일 수 있을것이다.
따라서 재사용성을 높이기 위해서는 Atomic Design 패턴
을 선택했다.
이처럼 공통되는 기능이 있으면서 조금 다른 디자인과 기능을 가진 컴포넌트들의 재사용성을 높이기 위해서는 molecules으로 잘 조합
하고 프로젝트 특징
에 따라 cutom hook이나 compound component를 사용하면 좋을꺼 같다.
Atomic으로 나누기();
customHook으로 기능 분리();
if(조합해야 하는 경우의 수가 많음 || 반복적으로 쓰이는 횟수가 애매) {
compound component로 조합 준비();
}
molecules 만들기();
위의 방법으로 설계를 한다면 전에 구현했던 방식보다 더 좋은 프로젝트 유지보수가 될꺼 같다.
아직 완벽한 설계방식은 아니지만 내가 추구하는 목적
에 한발짝씩 다가가야 겠다.
추구하는 목적: 재사용이 높으면서 다양한 비즈니스 요구에도 쉽게 적용할 수 있는 구조