Это плохая идея, чтобы избавиться от mx: в вашем коде Flex? - PullRequest
3 голосов
/ 12 ноября 2008

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

Ответы [ 6 ]

7 голосов
/ 12 ноября 2008

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

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

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

2 голосов
/ 14 ноября 2008

Просто чтобы быть голосом раздора ...

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

2 голосов
/ 12 ноября 2008

Вам нужен mx или несколько xmls: [ЧТО-ТО ЗДЕСЬ], потому что это пространство имен XML, которое относится к определению элементов управления. Это похоже на использование пространств имен в обычном коде.

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

Microsoft WPF XAML также требует этого.

1 голос
/ 19 ноября 2008

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

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

0 голосов
/ 22 июня 2012

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

0 голосов
/ 02 мая 2009

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

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

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

...