Data Driven Programming 소개
Jun 08
Nike's ActionScript, Programming Data Driven Programming, develop 7 Comments
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방식으로 개발중인 것을 인지해야 합니다. 저 같은 경우 막 코딩의 습관이 아직 남아 있어서 멍 때리는 순간 코드가 오염이 되더군요-_-; 그렇지만 매우 유용한 개발 방법임에는 틀림 없는 것 같습니다. ^^ 계속 프로젝트를 진행해 가면서 새로운 점을 배우면 또 포스팅을 하겠습니다.
RSS
Jun 08, 2010 @ 11:41:42
저런 종류를 Data Driven Programming 이라구 하는군요 ㅋ ~ 하나 배워 갑니다.
실무에선 위의 예보다 더 많은 조건을 요구 하는데 그에 따른 처리는 어떻게 해야 될지 생각해보게 하네요 ~
Jun 08, 2010 @ 12:13:44
응~ 나도 요즘 배우는 중.
많은 조건을 요구하는 것도 나중에 포스팅 해야겠다~
Jun 09, 2010 @ 01:05:33
음.. 런타임에 함수를 외부에서 가져와 사용할 수는 있을까요? swf > swf 말고 xml > swf 으로.. 문자열을 어찌어찌 해석해서 참조할 수 있으면 좋겠어요.
Jun 09, 2010 @ 18:44:38
런타임에 함수를 외부에서 가져와서 사용한다라..
불가능 하지는 않습니다. 실제로 히카형께서 구현을 하셨죠.
http://www.diebuster.com/?p=1495 이 글을 참고하시면 되겠네요~
Jun 20, 2010 @ 18:21:57
저런 방법으로 할때 항상 고민되는게 서버에서 정확한 데이터 규격이 내려오는가에 대한 걱정 같아요. 그 부분만 잘 처리 된다면
굿~
Jun 20, 2010 @ 20:53:12
응 그렇기 때문에 서버사이드 개발자와 데이터의 프로토콜을 명확히 하는게 엄청나게 중요하지 ㅎㅎ
Jun 21, 2010 @ 16:50:25
계속 프로젝트를 진행해 가면서 새로운 점을 배우면 또 포스팅을 하겠습니다.
라는건 어떻게 되어가는거야.
거짓말 쟁이 같은이라구