2009년 6월 21일 일요일

XML이냐 Array냐

Array로 구성한 트리를 마구 돌아다니다가 "XML 노드들을 기본 클래스로 바꾸고 Array 같은 기본 컬렉션에 담는 것"이 과연 좋은 일인지 생각하게 됐다.

 

처음에는 바꾸는 게 좋다고 생각 했다. XML 구조가 바뀌어도 오브젝트의 프로퍼티들을 바꿔주면 컴파일 타임에 문제가 생기는 위치를 알 수 있었다. 컴파일 에러가 나는 위치로 가서 코드를 고쳐주면 간단했다.

 

타입을 명확히 하여 생긴 이득이다. 소트웍스 앤솔러지에서도 보면 원시값은 아무 의미 없는 스칼라 값이며 의미를 분명히 하는 데 노력하라고 써있다. 날짜를 받기위한 매개변수 when을 int 타입으로 설정하면 누군가는 날짜 대신에 시간을 넣을지도 모를 일이다.

 

그러나 기본 컬렉션의 단점도 있다. 자료구조를 검색, 수정 하려니 만만치 않다. Flash에서는 DB를 지원하지 않아서 불편하다. MFC 할 때도 웬만한 자료구조는 기본 컬렉션을 쓰지 않고 SQLite로 처리했다. 검색, 수정, 추가등이 편리하기 때문이다.

 

Flash에서 XML, 특히 E4X로 XML을 다루면 자료구조를 어느정도 쉽게 다룰 수 있을거라고 생각된다. XML만 사용하고 타입이 모호해지는 문제(런타임에서야 문제를 확인할 수 있는 단점)는 테스트를 강하게 하는 쪽으로 해결하는 게 더 효율적일 것 같다.

 

아직 추측이니 XML 쓰면서 익혀봐야겠다. 당장에 객체에 해당하는 XML 노드에 행위(메소드)를 부여하려고 하면 XML은 불편해 보인다.

 

참고 :

(1) http://www.actionscript.org/forums/showthread.php3?t=156040

(2) http://norman.walsh.name/2003/06/01/xmlnotoo

(3) http://stackoverflow.com/questions/719674/hierarchy-data-structure-in-java-or-xml-to-object-conversion-best-practices

댓글 없음:

댓글 쓰기