책을읽고

구부러지거나 부러지거나 5장 (실용주의 프로그래밍)

KeepGooing 2022. 5. 11. 16:18
반응형

아무리 뛰어난 천재라도 세부사항에 집착하면 그 재능이 발휘되지 않는 법이다. 

-레비의 8번째 법칙-

 

요약 : 세부사항은 우리의 깨끗한 코드를 어질러 놓는다.

특히 변화가 자을 때는 더더욱 그런다. 비즈니스 로직, 법률, 경영자의 취향 등을 수용하느라 코드를 변경할 때마다

새로운 버그가 시스템을 깨뜨릴 수 있는 위험을 낳는다.

 그러므로 우리는 "세부사항에서 벗어나라!"고 한다. 세부사항을 코드에서 몰아내라. 이렇게 하면 우리의 코드는 매우 설정 가능하게 되고 소프트해진다. 즉 변화에 쉽게 적응할 수 있게 된다.

 

1. 동적 설정

우선 시스템을 되도록 설정가능하게 만든다. (배경 색, 프롬프트 텍스트, 알고리즘 선택 사용할 데이터베이스 제품, 미들웨어 기술, 사용자 인터페이스 스타일 등 시스템의 심층까지)

이런 요소를 엔지니어링하지 말고 설정 옵션으로 구현해야 한다.

 

메타데이터를 이용하여 반환 매개 변수, 사용자 선호사항, 설치 디렉터리와 같은 어플리케이션 설정 옵션을 기술해라.

 

그러면 메타데이타가 뭘까?

데이터에 관한 데이터다.

데이터베이스 스키마, 데이터 디렉터리 등을 대표적인 예로 들 수 있다.

스키마는 이름, 저장 길이, 그리고 이외의 몇몇 속성을 이용하여 필드(컬럼)를 기술하는 데이터를 포함한다. 

좀 넗게 사용하면 어플리케이션이 어떻게 실행되고 어떤 자원을 이용해야 하는지 등 것들 또한 메타데이터라고 할 수 있다.

내장 스크립트 언어를 활용하여 메타데이터를 좀 더 강력하고 유연하게 구현할 수 있다.

 

메타데이터 주도 어플리케이션?

메타데이터를 간단한 사용자 설정을 위해 사용하는 것 이상을 원한다.

 

비즈니스 로직

데이터베이스 엔진을 선택할 수 있는 설정 옵션으로 만들고, 메타데이터를 사용자 인터페이스에서 결정할 수 있 도록 했다.

비즈니스 로직은 프로젝트의 다른 어떤 부분보다 변화하기 쉽기 때문에 이를 유여한 포맷을 통해 유지보수하는 것이 좋다.

협동적 설정

지금까지 어플리케이션을 설정하는 사용자와 개발자에 대해 이야기 했다. 그러나 어플리케이션이 서로를 설정하게 만든다면 미리 계획하지 않고 그때그떄 맞게 설정되는 시스템이 있다면 매우 강력할 것이다.

운영체제는  이미 부팅하면서 자신을 하드웨어 맞게 설정하고, 웹 브라우저는 자동으로 새로운 컴포넌트를 업데이트한다.

대규모 어플리케이션이라면 아마도 이미 다른 버전의 데이터나 상이한 라이브러리, 운영체제 배포와 같은 문제에 직면하고 있을 것이다. 이때 좀 더 동적인 접근을 한다면 도움이 된다.

(메타데이터를 사용하지 않으면 최대한의 적응성이나 유연성을 얻을 수 없다.)

느낀점

메타데이터 프로그래밍은

메타데이터를 활용한 유연한 프로그램을 만드는 것이다.

메타데이터는 데이터에 대한 문서라고 할 수 있겠다.

데이터를 설정하고 설명해주는 무엇으로서 전체 프로그램 기능에서 빠르게 변화에 대응할 수 있는 방법 중에 하나 인듯 하다.

반응형