2008-11-12 4 views
3

저는 Flex에서 초보자입니다. 작성한 모든 컨트롤 선언에 대해 네임 스페이스 mx :를 작성해야하는 방식이 마음에 들지 않습니다. 코드가 복잡해집니다. 내가 쓰고 싶습니다Flex 코드에서 mx :를 제거하는 것은 나쁜 생각입니까?

<Panel ... 

오히려

<mx:Panel ... 

보다 내가 톱 레벨의

xmlns:mx="http://www.adobe.com/2006/mxml" 

대신 최상위 요소에 대한

xmlns="http://www.adobe.com/2006/mxml" 

를 작성 시도 선언. 이 작업은 어느 정도까지는 가능하지만 기존 코드를 위반했습니다. 하나는 문서에 정의 된 XML 데이터에 모두 런타임시 네임 스페이스로 aaa :가 추가됩니다. 또한 아주 작은 샘플 프로그램에서 다른 문제를 발견했습니다.

작동하는 방법이 있습니까? 그렇지 않으면 그 원인이 무엇입니까? 그리고 이유에 대한 배경 정보도 감사하겠습니다.

업데이트 : 답장을 보내 주셔서 감사합니다.하지만 실제로이 문제를 시도하고 중요하다고 생각한 사람의 의견을 듣고 싶습니다. 대부분의 사람들이 나에게 나쁜 생각이라고 말했지만 낙심하지 않았습니다. 이제는이 방법으로 원활하게 작동하는 몇 가지 프로그램이 있습니다. 그리고 내 모든 플렉스 애플 리케이션에서 이것을 할 계획이다. 한 가지 트릭이 보편적으로 작동한다고 주장 할 수는 없지만 저에게 효과적이었습니다. 당신이 당신의 문서 내에서 별도의 네임 스페이스가 필요한 경우, 예를 들어 매개 변수, 당신과 같이 그 요소 내에서 네임 스페이스를 만들 수 있습니다, HTTPService를을 :

 
    <HTTPService id="service" url="http://blah.com" 
     method="POST" result="gotResult(event)"> 
     <request xmlns:p="*"> 
      <p:param1>p1</p:param1> 
      <p:param2>p2</p:param2> 
     </request> 
    </HTTPService> 

희망이 누군가를하는 데 도움이됩니다. 나는 나의 코드가 얼마나 깨끗한 지, 보통의 html 파일만큼이나 깨끗하다는 것에 매우 만족한다. mx를 작성한다고 생각하는 사람들은 코드 전체에서 명확하고 그렇지 않은 부분은 완전히 동의하지 않습니다. 필자는 문서에서 고려해야 할 코드에서 동일한 문자 시퀀스를 지나치게 반복해야하는 언어에는 디자인 결함이 있다고 생각합니다. 당신에게 비유가 있습니다 : 당신이 버락 오바마에 관한 기사를 읽는다면 당신은 그것을 어떻게 바라겠습니까? 그리고 모든 한 문장에는 '버락 오바마'라는 단어가 들어 있습니다. 그것은 꽤 귀찮을까요?

+1

@toby Flash Builder를 사용하는 경우 계속 입력하지 않아도됩니다. '

+1

@toby 죄송합니다.

+0

고마워요 사이먼. Flex 빌더가 없습니다. 손으로 코딩. – airportyh

답변

2

컨트롤의 정의를 나타내는 XML 네임 스페이스이므로 mx 또는 일부 xml : [여기]가 필요합니다. [SOMEETHING HERE] 일반적인 코드에서 네임 스페이스를 사용하는 것과 같습니다.

패널 작성은 모호하며 다른 사람의 Panel 구현과 충돌 할 수 있습니다. 따라서 우리는 Panel에 속한 네임 스페이스 (http://www.adobe.com/2006/mxml)를 Flex로 선언하고 mx로 별칭을 지정합니다.

마이크로 소프트의 WPF XAML은 이것을 필요로합니다.

7

mx 네임 스페이스를 제거하면 프로젝트가 커짐에 따라 이름 충돌이 발생할 수 있습니다.

개인적으로 필자는 mx 네임 스페이스가 코드를 더 복잡하게 만든다고 생각하지 않습니다. 특히 컴포넌트 기반의 플렉스 개발이나 많은 컨트롤을 사용하고 있다면 더욱 그렇습니다. 지난 2 년 동안 큰 flex 코드베이스를 소유하고 있었기 때문에 mx 네임 스페이스는 눈에 띄지 않았습니다. 특히 항목 렌더러와 같이 인라인으로 임베드 된 사용자 정의 오브젝트가있는 경우에는 더욱 그렇습니다.

내 생각에 (비 과학적으로 주장하는) 권장 사항은 특히이를 제거 할 때 문제를 발견하는 경우입니다. 나는 당신이 잠시 후에 그것을 알아 차리지 못하게 할 것입니다.

2

그냥 Ely Greenfields 코드를 통해 파고에서

... 불화의 목소리하는 그는 않는 많은 - 플렉스 SDK 팀의 다른 개발자가 그렇게 할 경우 잘 모르겠어요하지만 일부를 빌려 않습니다 그것을하는 것에 대한 주장에 대한 믿음은 ... 맞습니까?

1

여기에 나와있는 대부분의 다른 답변에 동의합니다. 맡기는 것이 가장 좋습니다. 궁극적으로 사용자 정의 구성 요소와 같은 것에 대해 다른 네임 스페이스를 사용하려는 경우 구별을 위해 네임 스페이스가 필요합니다. 그런 다음 네임 스페이스와없는 네임 스페이스를 갖게됩니다.

언젠가 다른 사람이 당신의 코드를 봐야하기 때문에 떠나지 말아야 할 것입니다. 그리고 아마 mx를 사용하는 것보다 훨씬 더 쉽게 읽을 수 있기 때문입니다.

0

mx :는 Flex에 다른 구성 요소와 함께 Flex가 Flex에 내장되어 있다는 것을 Flex에 알리는 방법 일뿐입니다. 이렇게하면 Flex가 Panel을 찾는 위치를 파악하는 데 도움이되며 컴파일 프로세스가 빨라집니다.

또한 local :을 사용하여 작성한 구성 요소에 액세스 할 수 있습니다. 예 : 일부 기능을 내 패널에 추가하려면 일부 코드를 입력하고 MyPanel이라고 표시된 사용자 정의 된 패널로 저장합니다. 그것들은 MyPanel이 내 구성 요소라는 것을 Flex에 알려주는 데 사용할 수 있으며, 내 프로젝트의 어딘가에서 찾을 수 있습니다. 물론, 원하는 이름을 지정할 수 있습니다 :-)

나는 당신이 mx :가 HTML이나 XML에 강한 배경을 가지고있을 때 처음에는보기 흉한 것처럼 보인다고 동의하지만, 익숙해집니다. 그것.

+0

실제로 컴파일이 더 빠르면 놀라실 것입니다. – sharvey

0

모바일 장치를 포함한 모든 종류의 플랫폼에서 실행해야하는 응용 프로그램을 개발하는 경우 요즘 대부분의 모바일 장치에서 지원되는 최대한 순수한 spark를 사용하는 것이 가장 좋습니다. 예를 들어 Accordion과 같은 mx 컨트롤을 사용해야하는 경우가 있습니다. 이 경우 구현할 시간이 있다면 도구 또는 기본 컨트롤을 사용하여 이러한 고급 또는 복잡한 컨트롤을 대신 사용하는 것이 좋습니다.

관련 문제