Избавиться от mx: в коде Flex - плохая идея?

Я новичок в Flex, и мне не нравится, как вам нужно писать пространство имен mx: для каждого написанного вами объявления элемента управления. Это делает код загроможденным. Хочу написать:

<Panel ...

скорее, чем

<mx:Panel ...

Я пробовал писать

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

для элемента верхнего уровня вместо

xmlns:mx="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: весь ваш код более ясен, а что нет, я полностью не согласен. Я думаю, что языки, которые требуют от вас чрезмерного повторения одной и той же последовательности символов в вашем коде - что вы должны рассматривать как документ - имеют конструктивные недостатки. Вот вам аналогия: как бы вам понравилось, если бы вы читали статью о Бараке Обаме, и каждое предложение содержало бы слова «Барак Обама», это было бы довольно утомительно, не так ли?


person airportyh    schedule 12.11.2008    source источник
comment
@toby вам не нужно набирать mx: если вы используете Flash Builder. Просто введите <Panel [TAB], и он заполнит его за вас. Я никогда не набираю mx!   -  person Simon_Weaver    schedule 24.11.2008
comment
@toby, извините, я имел в виду, что вы набираете ‹Panel, затем нажимаете Ctrl + Space и выбираете Panel из раскрывающегося списка с вкладкой. Фактически, это больше нажатий клавиш, но обычно я все равно не набираю все имя класса   -  person Simon_Weaver    schedule 24.11.2008
comment
Спасибо, Саймон. Но у меня нет Flex Builder. Кодирование вручную.   -  person airportyh    schedule 27.11.2008
comment
Что ж, поймите, что пространства имён помещены туда неспроста. А если у вас нет FB, есть альтернативные IDE с открытым исходным кодом, такие как Flash Develop.   -  person midhunhk    schedule 09.08.2011


Ответы (6)


Я думаю, что удаление пространства имен mx почти наверняка вызовет проблемы с конфликтами имен по мере увеличения вашего проекта.

Лично я считаю, что пространство имен mx делает код более понятным, а не загроможденным, особенно если у вас есть гибкая разработка на основе компонентов или много ваших собственных элементов управления. Имея большую базу гибкого кода в течение последних двух лет, я нахожу пространство имен mx ненавязчивым, особенно когда у вас есть встроенные пользовательские объекты, такие как средства визуализации элементов.

Моя рекомендация (утвержденная ненаучно) - смириться с этим, особенно если вы обнаружите проблемы при его удалении. Бьюсь об заклад, вы перестанете замечать это через некоторое время.

person Simon    schedule 12.11.2008

Вам понадобится mx или какой-нибудь xmls: [SOMETHING HERE], потому что это пространство имен XML, которое относится к определению элементов управления. Это похоже на использование пространств имен в обычном коде.

Просто написание Panel неоднозначно и может конфликтовать с реализацией Panel другим человеком. Поэтому мы объявляем Flex, к какому пространству имен принадлежит Panel (http://www.adobe.com/2006/mxml), и мы присваиваем ему псевдоним mx.

Это также требуется для Microsoft WPF XAML.

person Justin Bozonier    schedule 12.11.2008

Просто быть голосом разногласий ...

Копаясь в коде Эли Гринфилдс, он делает это много - я не уверен, что другие разработчики в команде Flex SDK делают это, но это придает некоторую достоверность аргументам в пользу этого ... не так ли?

person onekidney    schedule 14.11.2008

Я согласен с большинством других ответов здесь, лучше оставить это. В конце концов вы захотите использовать другие пространства имен для таких вещей, как пользовательские компоненты, и тогда вам понадобится пространство имен для того, чтобы различать. Тогда у вас будут некоторые с пространством имен, а некоторые без.

Я бы сказал, что если по какой-либо другой причине, вы должны оставить его, потому что когда-нибудь кому-то другому, возможно, придется взглянуть на ваш код, и они, вероятно, сочтут его более читаемым с mx, чем без него.

person Ryan Guill    schedule 19.11.2008

Mx: - это просто способ сообщить Flex, что Panel (вместе с любым другим компонентом) является частью инфраструктуры Flex, что она встроена в Flex. Это помогает Flex знать, где искать Panel, и ускоряет процесс компиляции.

Вы также можете использовать local: для доступа к компонентам, созданным ВАМИ. Пример: если я хочу добавить некоторые функции в свою панель, я набираю код и сохраняю его как настраиваемую панель, получившую название MyPanel. Их я могу использовать, чтобы сообщить Flex, что MyPanel - это мой компонент, и он может найти его где-нибудь в моем проекте. Конечно, вы можете называть это как хотите :-)

Я согласен с вами, что mx: сначала выглядит некрасиво, особенно если у вас уже есть хороший опыт работы с HTML или XML, но вы к этому привыкнете.

person Aethex    schedule 02.05.2009
comment
Я был бы удивлен, если бы это действительно ускорило компиляцию. - person sharvey; 28.07.2010

Имейте в виду, что если вы разрабатываете приложения, которые должны работать на всех типах платформ, включая мобильные устройства, лучше всего по возможности придерживаться чистой искры, поскольку в наши дни она поддерживается на большинстве мобильных устройств. Есть случаи, когда кто-то вынужден использовать элемент управления mx, например, Accordion. В этом случае, если у вас есть время для его реализации, разумно использовать инструменты или базовые элементы управления в Spark, чтобы вместо этого создать эти более сложные или сложные элементы управления.

person Sean Nell    schedule 22.06.2012