Data Driven Programming( 데이터 주도 프로그래밍 )을 간단하게 설명하자면 데이터가 주가 되도록 알고리즘을 만들어서, 데이터에 따라 다르게 작동하도록 하는 것 입니다. 요즘 제가 진행하는 프로젝트에서는 클라이언트 쪽의 감수가 매우 까다롭기 때문에 그 감수를 손쉽게 처리하기 위해선 Data Driven Programming으로 개발을 해야 합니다. 그럼 간단한 예제를 보면서 설명을 해 보겠습니다. 지역과 금액을 입력하면 지역별 세율에 따른 세금을 반환하는 함수입니다.

private function returnTax( $usState:String , $price:Number ):Number{
	var result:Number
	result = 0;

	switch ( $usState ){
		case 'MA':
			result = 0.05*$price;
			break;
		case 'NJ':
			result = 0.07*$price;
			break;
	}
	return result;
}

위의 코드가 일반적인 코드라면, Data Driven Programming을 하게 되면 다음과 같습니다.

private var _stateTax:Object; // 서버로 부터 얻어온 새금율 데이터
private function returnTax( $usState:String, $price:Number ):Number{
	var result:Number, key:*;

	result = 0;
	for( key in _stateTax ){
		if( key === $usState ){
			result = _stateTax[key]*$price;
		}
	}

	return result;
}

서버로부터 세율을 얻어와 알고리즘에 사용하고 있어서 서버의 데이터가 변동 되면 컴파일을 하지 않아도 됩니다. 반면 첫 번째 코드는 새로 지역이 추가 되거나 세율이 수정될 때 마다 컴파일을 해야 합니다. 코드를 통해 비교한 것을 보시면 금방 이해가 가실 겁니다.

그럼 끝으로 제가 프로젝트를 진행하면서 느낀 Data Driven Programming의 특징을 정리해보겠습니다. 먼저 데이터의 변동에 따라 결과물(swf)이 달라지기 때문에 개발 후 유지/보수가 빈번한 프로젝트에 매우 유용할 것 같습니다. 하지만 데이터를 만들어 내는 서버 사이드 쪽 알고리즘은 상당히 복잡해지겠지요. 그리고 데이터에 대한 프로토콜을 매우 잘 정해야 합니다. 그리고 개발을 하면서 항상 Data Driven Programming방식으로 개발중인 것을 인지해야 합니다. 저 같은 경우 막 코딩의 습관이 아직 남아 있어서 멍 때리는 순간 코드가 오염이 되더군요-_-; 그렇지만 매우 유용한 개발 방법임에는 틀림 없는 것 같습니다. ^^ 계속 프로젝트를 진행해 가면서 새로운 점을 배우면 또 포스팅을 하겠습니다.