라이브러리에 있는 이미지를 가져다 쓰기 위해서는

라이브러리에 A 라는 Linkage 를 주었다고 하면

var image:BitmapData = new A(0, 0);
var imageBmp:Bitmap = new Bitmap(image);
this.addChild(imageBmp);

라고 해야한다.

약간 번거럽기도 하고 매우 반복되는 구문이라

메소드를 한번 만들어보자.

라이브러리에 있는 클래스를 가져다쓰는 부분을

보다 명확하게 구현하자면

다음과 같이 표현해야한다.

var instanceClass:Class = ApplicationDomain.currentDomain.getDefinition(linkage) as Class;

현재 실행되고 있는 어플리케이션에서 클래스를 가져오겠다는 코드다.

이부분을 이용하여 다음과 같은 메소드를 만들었다.


사용법은 이제 간단하게

var image:Bitmap = getBitmapFromLibrary("JPG");

이렇게 사용하면 되겠다.

이것이 라이브러리의 힘!

// reEmbed.js
function reEmbed(str){ document.write(str) }

// at html

<script language="javascript" src="http://pro.dmikorea.co.kr/reEmbed.js"></script>
<script language="javascript">

<!--

커스터마이징시 바꿀 변수들

swf_src = SWF 의 경로 (절대경로, 상대경로 무관)
swf_width = SWF 의 가로크기 (px, % 무관)
swf_height = SWF 의 세로크기 (px, % 무관)
swf_version = SWF 버젼 (9.0.47.0 기본)

그밖의 주요 변수들

swf_fullscreen = false 로 되어 있을 경우 전체화면이 실행되지 않습니다.
swf_script = always 가 기본. samedomain 은 다른 도메인에서 불려진 swf 는 외부와 통신할 수 없습니다. never 는 어떤 swf 도 외부와 통신할 수 없습니다.
swf_wmode = window, opaque 는 자체 배경색을 유지하고 transparent 는 플래시의 배경색을 투명하게 만들어 웹페이지의 배경색을 보여줍니다.
swf_networking = all 이 기본이며 internal 로 되어 있으면 일부 링크 기능이 제한되며 none 으로 되어 있으면 어떤 외부 동작도 할 수 없으며 서버와 통신도 할 수 없습니다.
swf_vars = 플래시로 보낼 파라미터 값.

-->

var swf_src    = "CGMFlvPlayer.swf";
var swf_width   = "406";
var swf_height  = "366";
var swf_version  = "9.0.47.00";
var swf_id    = (tmp = swf_src.split("/"), tmp = tmp[tmp.length - 1], tmp.split(".swf").shift());
var swf_fullscreen = "true";
var swf_script   = "always";
var swf_wmode  = "window";
var swf_networking = "all";
var swf_bgcolor  = "";
var swf_vars    = "cid=1234&skin=pink"; // pink, gray, purple, black
var nocache    = Math.random()*3600000;
reEmbed('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+swf_version+'" name="'+swf_id+'" width="'+swf_width+'" height="'+swf_height+'" id="'+swf_id+'">  <param name="movie" value="'+swf_src+'?nocache='+nocache+'" />  <param name="quality" value="high" />  <param name="allowFullScreen" value="'+swf_fullscreen+'" />  <param name="bgColor" value="' + swf_bgcolor + '" /> <param name="allowScriptAccess" value="'+swf_script+'" />  <param name="allowNetworking" value="'+swf_networking+'" />  <param name="wmode" value="'+swf_wmode+'" />  <param name="FlashVars" value="'+swf_vars+'" />  <embed src="'+swf_src+'?nocache='+nocache+'" allowFullScreen="'+swf_fullscreen+'" FlashVars="'+swf_vars+'" allowScriptAccess="'+swf_script+'" allowNetworking="'+swf_networking+'" width="'+swf_width+'" height="'+swf_height+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="'+swf_id+'"></embed></object>');
</script>

요즘 "디자인 패턴을 이용한 리팩터링" 이라는 책을 읽고 있습니다.

프로젝트란 것은 끝이 나더라도 한동안 또는 끊임없이 수정사항과 QA를 계속 하게 되어 있습니다.

구조를 잘 잡아서 일정내에 끝을 낸 상황에서 처음 한두번의 수정사항이나 QA는 금방금방 처리를 하죠.

그런데 횟수가 거듭될수록 소스는 꼬여가고 주석도 점점 달 시간이 없어지고

처음에 한번에 고쳤더라면 이렇게까지는 안해도 되었을텐데 라는 후회섞인 원망을 하게되죠.

작은 수정사항도 횟수가 거듭되면 점점 손대는 양이 불어나게 됩니다.

왜 그럴까요?

Refactoring 이라는 것은 이미 개발된 또는 현재 개발중인 코드를

재 편성하는것을 뜻하죠.

기능을 추가하기 위해, 소스의 중복을 줄이기 위해, 유지보수를 편하게 하기위해...

하지만 현실에서는

이미 프로젝트가 끝나고 클라이언트에게 전달되서 실서버에 반영되고 나면

보통 손을 놓는게 다반사입니다.

제목에서 언급했다시피

고장나지 않았다고 해서 손을 놓게 되면

그후에 들어오는 수정사항이나 QA는 말그대로 혹에 혹을 붙이는 처참한 결과를 빚게 됩니다.

때문에 일정에 치여 프로젝트가 겨우겨우 끝이 났더라도

안도하지 말고 미쳐 못봤던 부분이나 중복되어 있는 부분, 시간이 없어서 제대로 구현하지 못했던 부분이나 캡슐화가 제대로 되어 있지 않은 부분들은 고쳐줘야 합니다.

제가 읽는 저 책은 디자인 패턴을 리팩토링을 하면서 어떻게 적용을 해야하는지 조언을 해주는 책이죠.

또 수정사항을 작업하면서 이 수정사항만 제대로 돌아가도록 막코딩식으로 작업을 해버리면

그 다음 수정사항이 왔을때 손을 댈 수 없는 상황이 빚어지곤 합니다.

이때는 if else 문으로만 처리해도 되는 문제일지라도

기능과 역할이 다르다면 확실히 영역을 나눠주고 각자 메소드가 자기 역할을 수행할 수 있도록 리팩토링 해줘야 한다는 말이죠.

그래야 다음 수정사항이 왔을때 보다 효율적으로 적용할 수 있기 때문입니다.

무엇보다 중요한 부분은 바로 이런 시간과 노력이 필요한 이유를

상사와 다른 팀에게 인식을 시켜줘야 한다는 것입니다.

0.9 의 10 제곱이야기처럼 일단 제대로 돌아가니까 손대지 않고 놔둬버리면

횟수가 거듭될수록 더 많은 시간과 땀이 들어야 한다는것을 분명히 인식시켜야 합니다.

처음에는 0.9의 완성도로 만족했지만 그다음에는 0.81 그다음은 0.72... 10번을 반복하면 1/3 수준인 0.34밖에 되지 않습니다.

우리 모두 고급개발자가 되기 위해서는 우리가 필요한것이 무엇이며 왜 필요한지를

내가 아는것뿐만이 아니라 다른팀원에게 이해시키는것도 반드시 필요한 일 일거라 생각합니다.

왜냐하면 아직은 우리나라에서 특히 플래시 개발에 있어서는 이러한 인식이 부족하기 때문이죠.

+ Recent posts