* 사전적 정의가 아닌 Flash 개발자의 시각에서 바라본 해석입니다.
디자인 패턴, Design Patterns
> 코드를 구조적이고 체계적으로 완성도 높게 개발하기 위하여 보다 효율적인 방법으로 프로그래밍을 하는 여러가지 방법들.
리팩터링, Refactoring
> 기존의 코드를 이해도가 높고 수정, 보완에 효율적이도록 기능은 그대로인체 내부 구조를 변경하는 작업을 말한다.
XP, eXtreme Programming
> 표현이 참 재미있는 용어다. 다양한 변경사항과 뛰어난 코드 가독성, 모든 메소드의 테스트가능화, 매우 높은 관리도를 지향하는 "극"적으로 뛰어난 효율성을 갖춘 프로그래밍을 일컫는다.
Agile 방법론
> Agile 은 "기민한, 민첩한" 이라는 뜻이다. 이는 매우 복잡하고 극변하는 요구사항과 새로운 기능을 재빠르게 수용하고 적용할 수 있도록 개발하는 것을 말한다.
디자인패턴을 효율적으로 사용하고 서비스지향적으로(SOA) 구조를 잡아 개발을 하게 되면
다양한 요구사항을 빠르고 안정적으로 적용할 수 있다라는 뜻으로 이해해도 된다.
서비스 지향 설계, SOAP, Service-Oriented Architecture Programming
> 넓은 뜻으로는 서비스 지향 개념을 바탕으로 소프트웨어 시스템을 구축하려는 의도 자체를 의미한다.
하지만 좁은 뜻으로는 확장이 용이하고, 재사용이 가능하며 변화와 필요에 따라 능동적으로 변화를 취할 수 있는 소프트웨어 개발방법론이라고 하겠다.
매우 추상적이고 광범위한 의미이며 작게는 개발방법론, 크게는 IT의 흐름 전체를 정의할때 주료 사용되는 용어다.
상속하다. extends
> 많이 쓰는 용어라 이게 왜 중요한가 하겠지만
한국에서는 상속하다 라는 의미가 반대로 사용되고 있다는 사실을 아는가?
class MovieClip extends Sprite
이 구문을 국내 개발자는 "Sprite 를 상속받아 MovieClip 을 만든다" 라고 표현한다.
이는 명백히 잘못된 표현이며 "MovieClip 은 Sprite 를 상속한다" 가 맞는 표현이다.
무슨 차이냐면 주객이 전도가 되었다는 뜻이다.
MovieClip 의 관점에서 Sprite 클래스를 상속하는것이다.
즉 MovieClip -> Sprite 로 표현하는게 맞는 뜻이다.
한국식 표현으로 계속 표현해오다가 UML 을 공부하면 무지하게 헷갈렸던 부분이다.
즉 "A 가 B 를 상속한다." 라는 표현은
A extends B 라는 뜻이다.
용어의 통일은 매우 중요한 일이다. 헷갈리지 말자.
구현하다. implements
> 아무렇지도 않게 통념적으로 쓰이는 말이지만 추상적인 interface 를 implement 하여 클래스를 만드는 작업을 표현할때는 "구현하다" 라는 표현이 가장 적당하다.
때문에 이 용어를 정의하지 않고는 class A implement B 를 표현하기가 매우 난감하다.
구현이라는 의미 자체가 아직 실체화되지 않은 것을 실체화하는 작업을 뜻하기 때문이다.
그래서 야꼬는 구현하다라는 용어를 정의하여 쓰기를 권한다.
UML, Unified Modeling Language
> 플래시는 아직 레퍼런스가 많지 않아 아직 UML이 널리쓰이지는 않고 있다.
이미 C나 Java 진영에서는 거의 기초소양 수준으로 쓰이고 있다.
Three Amigo라는 애칭으로 불리는 Grady Booch, James Rumbaugh, Ivar Jacobson 이 세명이 창시자이며
UML 은 객체와 객체와의 관계, 프로세스의 흐름, 클래스들관의 상속관계나 의존관계등과 같은 Model의 연관관계를 표현하기 위해 만들어진 표준 언어다.
여기서 중요한것은 UML 이 Language 라는 것이다.
즉, 정해진 언어이기 때문에 배우지 않으면 이해할 수 없다는 뜻이다.
도형이나 선, 모양이 다 각기 뜻을 가지고 있으며 무엇을 보여주는 그림인지에 따라 그 의미와 표현이 달라지기 때문에 반드시 공부를 해야한다.
UML 은 현재 2.1까지 나와있는 상태며
Flash 에서 사용할 수 있는 UML 툴은 내가 알기로는 Enterprize Architect 밖에 없는걸로 안다.
(이거 제대로 물건이다 -_ㅡ^ 초강츄)
요즘 한창 Refactoring 과 Design Patterns 을 공부하고 있다.
듣기는 많이 듣지만
사실 리팩터링과 디자인패턴이라는게 살갑게 와닿지 않았던게 사실이다.
뭐 예를 들어 "Barney 공식" 이라하면 어떤 소스고 어떻게 하는지 와닿지만
"컴포즈 메소드", "팩터리 패턴" 이라고 들으면 뜬구름인 마냥 대충 알겠지만
머릿속에 코드가 떠오를 정도로 와닿지는 않았다.
하지만 지금 읽는 책이 "Refactoring to Patterns" 인데 살갑게 와닿는 내용이 많다.
그래서 공유하고자 이렇게 키보드에 손을 얹었다^^
매우매우 원시적이며 이해하기 쉬운 살에 닿는 방식으로 설명하겠다.
우선 가장 기초적으로 리팩터링이란것이 무엇인지 알아보자.
Re-factoring 은 이미 진행되고 있는 프로젝트 중간에 투입되어 선임자의 코드를 이어 받는 경우와 이미 완료된 프로젝트를 수정 또는 보완하는 작업을 통상적으로 일컫는다.
간단하게 말해서 이미 잘 돌아가고 있는 코드를 분해해야 한다는 의미다.
극단적으로 간단한 예를 들어보자.
- 원본 소스
소스 보기
- Compose Method 패턴을 이용한 리팩토링
소스 보기