Recently in [개발] Pain Book Category

XML 요소냐, 속성이냐?

| 1 Comment | No TrackBacks

Principles of XML design: When to use elements versus attributes @ developerWorks


XML 문서의 형식이나 구조를 결정 해야 할때 한 가지 의문이 들곤 합니다. 정보를 요소로 뺄지, 속성으로 넣을지 결정하는 규칙 같은 게 있지 않을까 같은 고민을 하게 됩니다. 마침 IBM developerWorks에 가봤더니 좋은 글이 있었습니다.

요소 대 속성, 어떤 것을 써야 할 지에 대한 지침입니다. 두루뭉술 짐작만 하던 방법에 이름을 붙여 법칙이라 부르니 뭔가 있어 보입니다.

핵심 콘텐츠의 원칙(Principle of core content)

핵심 콘텐츠는 요소에, 보조 내용은 속성에 쓴다.

구조적 정보의 원칙(Principle of structured information)

묶여 다니는 정보는 요소로, 독립 정보는 속성에 쓴다.

가독성의 원칙(Principle of readability)

사람이 읽을  정보에는 요소를, 컴퓨터가 사용할 정보에는 속성을 쓴다.

요소 속성 결합 원칙(Principle of element/attribute binding)

다른 속성에 의해 꾸며져야 하면, 요소를 쓴다.

FolderPackage.jpg Microsoft Visual Studio에 솔루션 탐색기가 있습니다. 소스 코드를 담은 파일들을 보여주는 창 관련된 코드 파일끼리 묶어 폴더로 분류하는 방법을 사용했습니다.

문제는 이 폴더까지 많아지게 되면, 점점 파일 관리가 어려워집니다. 슬슬 코드 분리를 생각하게 될 때 즘, 이 폴더를 나누는 방식이 틀린 게 아닐까 생각했습니다. 단진 연관된 파일끼리 묶는 것이 맞는가 하는 의문이 들었습니다.

차후 코드를 분리시킬 순간이 찾아옵니다. 그 기준이 폴더가 될 수 있다면 편하지 않겠습니까? DLL이나 라 독립시킬 때, 고민 없이 폴더 단위로 끊으면 됩니다. 즉, 폴더를 분류하는 기준은 미래의 패키지가 되는 겁니다.

FolderPackageAffter.jpgFolderPackageBefore.jpg 예를 들어 Master 클래스와 Slave 클래스가 있습니다. Master 클래스는 인터페이스 ISlave를 통해 Slave를 사용합니다. 기존 방식대로 라면, ISlave와 Slave 클래스는 같은 폴더에 존재합니다. 그러나, 패키지 방식이라면 ISlave는 자신을 사용하는 Master 클래스와 함께 있어야합니다.


끝.
메뉴를 감추거나 비활성화 시키지 마세요? @ art.oriented


메뉴를 숨기거나 비활성화시키지 말랍니다. 무슨 의미일까요? 조엘의 글을 읽었습니다. 페르마의 지하철 포스팅 같습니다. 부연설명을 듣고 싶으나, 찾지 못했습니다.

역시 논쟁이 되었습니다. 숨기지 말기는 대부분 동의가, 비활성화는 반대가 많았습니다. 그러나 다들 사용자가 '그놈 어딨지?', '이놈 왜 안돼?'라고 말하게 해선 안 된다는 전제엔 공감합니다.

메뉴 바와 윈도우 폼을 구분하여 생각하자고도 합니다. 툴팁을 쓰자고도 합니다. 하지만, 아무래도 비활성화 상태를 나눌 필요가 있습니다.

  • 반응하지 않고 작동하지 않는 상태: 기존과 동일
  • 반응하지만 작동하지 않는 상태: 작동하지 않는 이유를 알려주리라 기대되는 시각정보
툴팁도 좋지만, 마우스가 제한된 환경에선 어렵기 때문입니다.


끝.


저자 워크숍 @ 한국 developerWorks


가능합니다. 함께 더욱 높은 곳에 이르는 방법이 있고, 이미 사용되어 좋은 결과를 내고 있습니다. 긍정적 피드백 - 개선 제안 - 저자의 질문으로 이어지는 과정에 숨은 힘이 궁금합니다.

당장 여기저기 써보고 싶습니다. 같은 방향을 바라보는 이들이 사용한다면, 재미있는 모임이 될 겁니다.


끝.

About this Archive

This page is an archive of recent entries in the [개발] Pain Book category.

[기술] Code Recipe is the next category.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.23-en