메타프로그래밍 [실용주의 프로그래머]

LEE KYU WON·2021년 1월 21일
0

외부 환경의 변화로 인해 코드를 자꾸 변경하게 되면 새로 코드를 짜는 일은 상당히 번거로운 일이고 새로운 버그가 발생 할 수 있다. 이러한 언제든지 변할 수 있는 세부 사항 (배경 색, 프롬프트 텍스트, 알고리즘의 선택, 사용할 데이터베이스 등)을 코드 밖으로 빼서 설정 가능 (configurable) 하게 만들어 코드의 유연성을 높일 수 있다. 이러한 데이터들은 메타데이터로 분리 가능하다.

메타데이터를 이용한 설정은 주로 런타임에서 설정 가능하기 때문에 설정의 변경으로 인해 프로그램을 다시 컴파일하지 않아도 된다. 메타데이터를 불러오는 시점은 프로그램이 시작하는 시점에서도 가능하고 프로그램이 실행되는 중간에서도 가능하다. 언제든지 메타데이터를 새로 불러올 수 있는 프로그램이 좋지만 로직이 복잡해지므로 용도에 따라 서버와 같이 한번 프로그램이 실행 된 뒤 설정을 잘 변경하지 않을 경우 시작시에 메타데이터를 불러오도록 설계해도 무관하다.

또한 메타데이터를 프로그램은 좀 더 선언적 (declarative) 이다.

실용주의 프로그래머 Tip 38
코드에는 추상화를, 메타데이터에는 세부내용을

정리하자면, 메타데이터를 사용한 프로그램을 만들면 다음과 같은 이점이 생긴다.

  • 설계의 결합도를 줄여 좀 더 유연하고 적응성있는 프로그램을 만들 수 있다.
  • 세부사항을 코드 밖으로 몰아내서 좀 더 강하고 추상적인 디자인을 만들 수 있다.
  • 애플리케이션을 커스터마이징 하기 위해 다시 컴파일 할 필요가 없다.
  • 메타데이터는 Domain specific language 로 제작되어 사람이 이해하게 편하게 할 수 있다.
  • 동일한 애플리케이션 엔진과 상이한 메타데이터로 하나의 프로그램을 여러 용도로 사용 할 수 있다.

웹프로그래밍에서는 개발단계에서는 환경변수 또는 dotenv 를 이용해 사용할 데이터베이스 등을 설정해서 로컬 개발환경 구성을 쉽게 할 수 있고, 프롬프트 메세지를 메타데이터화 해서 i18n 을 쉽게 할 수 있을것으로 기대된다.

profile
벼랑끝에서 성장하는 개발자 이규원입니다.

0개의 댓글