【问题标题】:How much logic should be included in a Flex MXML attribute?Flex MXML 属性中应包含多少逻辑?
【发布时间】:2010-11-21 00:03:30
【问题描述】:

是否应该将编程逻辑插入到 MXML 属性中?我有一些按钮可能会或可能不会根据相关组件的状态(例如DataGridList)调度事件,我试图弄清楚逻辑是否足够简单,可以简单地嵌入其中之一MXML 中的 Event 属性。

以下是我的工作方式:

<mx:Script>
    <![CDATA[
        private function sendEvent1():void {
            if (list.selectedIndex != -1) {
                dispatchEvent(new Event("click!"));
            }
        }
    ]]>
</mx:Script>
<mx:List id="list" dataProvider={listData} />
<mx:Button label="Click!" click="sendEvent1()" />

在此示例中,Script 标签中包含的 ActionScript 包含用于确定是否应分派事件的逻辑。

但是,可以对按钮进行一些修改,从而不再需要 sendEvent1 函数:

<mx:Button label="Click!" click="if (list.selectedIndex != -1) dispatchEvent(new Event("click!")" />

忽略这些 sn-ps 中的一些明显问题(例如静态字符串、缺少数据提供者的代码等),我对第二个示例有一些担忧:

  • MXML 可读性较差(变得冗长且混乱)
  • 随着点击按钮需要更多的函数调用,MXML 中的逻辑变得更加笨拙。
  • 在 MXML 中嵌入逻辑使其不太直观(至少对我而言)。如果我想了解 MXML 的逻辑,我更倾向于查看 Script 标记,我希望在该标记中使用 ActionScript。

在 MXML 属性中插入逻辑还有其他优点吗?我越来越频繁地看到这种用法,我想确保我不会错过任何令人信服的理由来改变我的做事方式。

【问题讨论】:

  • 我同意你的看法。我可以从直接在 MXML 中向事件添加逻辑中看到它们的唯一好处是用于快速原型设计。我更喜欢阅读像您这样的代码,例如我自己,尽管我希望看到一个更好的函数名称。 ;)
  • 是的,快速输入代码 sn-ps 通常会导致糟糕的函数名称和 ids.. 真正的代码有更好的命名约定 ;) 感谢您的想法!

标签: apache-flex mxml


【解决方案1】:

如果代码长度超过一行,我想不出将逻辑添加到 MXML 代码有什么真正的好处,比如警告或最多,无条件地设置一个变量。想象一下尝试内联读取 switch 语句。

【讨论】:

    【解决方案2】:

    内联放置多个衬垫不是一个好主意。难以阅读,难以调试。 不过,为了使内联代码更具可读性,请将其放在花括号内并分多行编写。

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2012-03-16
      • 2010-12-12
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多