디자인 패턴의 정의와 포스트 작성 이유
소프트웨어 개발에서 디자인 패턴은 보다 효율적이고 견고한 코드를 만들기 위해 일반적인 문제에 적용할 수 있는 재사용 가능한 솔루션이라고 정의되어 있다.
이런 정의에 앞서 자바스크립트, 타입스크립트, 리액트, 넥스트 등에 거쳐 동일한 자바스크립트 언어를 적어보면서, 내가 적은 코드를 보다 일반화되고 더 효율적인 방식으로 적을 수 없을까에 대한 고민을 계속 했다. 반복되는 코드, 동일하지만 약간 씩 달라서 추상화하기도 애매한 그런 코드들, 어떤 알고리즘을 생각하더라도 결국 변수 하나 선언하고, 그 변수를 반복문 등을 사용해서 어떻게든 짜집기 해서 동작하게 만드는 답 없는 코드들..
혼자 아무리 고민을 해도 나의 머리에서만 노는 것이기 때문에, 이러한 코드들을 바라보면서 당시 내가 보기에는 괜찮아 보이는 코드가 알고보면 비효율적이고 지저분한 코드 일 수 있음을 인지하고 있었다. 이러던 와중에 디자인 패턴에 대한 공부를 해보면 어떨까 라는 생각이 들었다. 보다 다양한 문제에서 일반화된 해결책으로 제시된 디자인 패턴들.. 이들에 대해 학습하다보면 보다 더 나은 코드에 대한 답을 찾아갈 수 있지 않을까 싶기 때문이다.
그래서 디자인 패턴이 무엇인가
디자인 패턴은 본디 웹 개발에서 한정지어 보는 것이 아니라 소프트웨어 전반에 있어서 일반화된 문제를 해결하기 위한 솔루션 모음책이라 할 수 있다. 즉, 싱글톤, 옵저버 등의 패턴은 프로그래밍의 어떤 분야를 막론하고도 동일한 문제에 대해서는 공통적으로 적용할 수 있는 지침서 같은 것이라 이해할 수 있다.
그런 의미에서 디자인 패턴이란 소프트웨어 설계에서 일반적으로 발생하는 문제에 대한 표준화된 솔루션 이라 딱 잘라 정의할 수 있을 것 같다.
좋은 디자인 패턴은 최소한의 수정만으로 여러 상황에서 재사용 가능하다고 하는데, 과연 좋은 디자인 패턴이란 어떤 조건을 갖추고 있는지 궁금해진다.
디자인 패턴 적용 시 일반적인 이점들은?
무엇이든 좋아보인다고 그냥 가져다 쓰면 탈이 나는 법이다. 디자인 패턴 또한 그렇다. 아무리 좋아보이고 효율적인 것처럼 보이더라도 상황에 맞지 않으면 옳지 못하다.
그럼에도 디자인 패턴이 제대로 적용 된다면 다음과 같은 이점들을 얻을 수 있다.
- 코드 재사용성 및 신뢰성 향상
- 코드의 유지관리 편리성 증가
- 불필요한 중복 구조 제거 등을 통한 애플리케이션 성능 향상과 확장성 향상
이러한 장점들을 지닌 디자인 패턴은 일반화된 문제들에 적용했을 때 효과가 있음이 입증되어 있기 때문에, 애플리케이션 구축시 구조화된 접근 방식을 적용하고자 할 때 찰떡궁합이라 할 수 있을 것 같다.
다음 시간 부터 하나 씩 정리해보기
오늘은 간단히 디자인 패턴의 개념과 이점, 왜 이 포스트를 작성하게 되었는지 이유를 정리해 보았다. 즉, 개요다. 다음 시간 부터는 디자인 패턴을 하나 씩 공부하고 정리해보면서 내가 직면한 여러 상황에서 어떤 디자인 패턴을 사용했으면 더 효율적이었을까 고민하는 시간을 가져볼까 한다.
참고자료
나무위키 - 디자인패턴 | https://namu.wiki/w/%EB%94%94%EC%9E%90%EC%9D%B8%20%ED%8C%A8%ED%84%B4
디자인패턴들| https://refactoring.guru/ko/design-patterns