디자인 패턴 개념

#React #designpatterns

이 시리즈는 애디 오스나미님(옮긴이 윤창식님)의 <자바스크립트+리액트 디자인 패턴> 자습서를 보고 공부한 내용을 담고 있습니다. 좋은 책 펴내주셔서 감사합니다😊


디자인 패턴

패턴이란 소프트웨어 설계에서 반복되는 문제와 주제에 적용할 수 있는 재사용 가능한 템플릿을 뜻합니다.

리액트 자습서를 보고 공부하다가 상태 머신 패턴을 처음 접하고, 그걸 계기로 디자인 패턴 공부를 시작하게되었다. 그 중 리액트에 적용하는 디자인 패턴 책이 있어서 감사한 마음으로 집어들었다.

디자인 패턴이 개발자들에게 유용한 이유

  1. 검증되었다
  2. 쉽게 재사용할 수 있다
  3. 알아보기 쉽다
  4. 개발 과정에서 사소한 실수로 인해 생길 수 있는 큰 문제를 방지한다
  5. 특정 문제에 국한되지 않은 종합적인 해결책을 제시한다
  6. 반복을 피함으로써 전체 코드의 양을 줄일 수 있다
  7. 공통된 어휘를 사용하여 의사소통이 원활해진다
  8. 인기 있는 디자인 패턴은 커뮤니티의 선순환을 유발한다

디자인 패턴이 개발자들에게 유용한 여러 이유 중 가장 핵심이 되는 것은 처음 세 가지 인 것 같다. 나에게 항상 문제는 3번이었다. 공부를 해야 알아보기 쉽기 때문이다.

예를 들어 책의 예시로 리액트의 프롭 드릴링 문제를 공급자 패턴으로 해결한 것이 나온다. 부모에서 자식으로 props가 전달되는데, 자식이 너무 깊은 곳에 있어 계층 구조가 깊어지는 경우 Context API를 사용해서 해결하는 예시이다. 이런 경우 나는 Context API의 사용법은 알지만, 공급자 패턴은 모른다. 어쩌면 나에게 디자인 패턴은 패턴이 아니라, 항상 새로운 코드 로직 또는 라이브러리의 사용이었을지도 모른다.

패턴에 대한 개념을 알고 있다고 해서 패턴을 쉽게 알아볼 수는 없습니다. 작성한 코드가 정해진 패턴을 따르는 것인지 아니면 우연하게도 특정 패턴과 닮아있는 것인지 알기란 힘든 일입니다.

책에서는 패턴에 대해 알아도 패턴을 알아보기란 힘든 일이라고 한다. 하지만 아는데 못알아채는 것과 아예 모르는 것은 다르다고 생각해서, 꾸준히 공부하면서 디자인 패턴 개념과 친해져 볼 계획이다.