【问题标题】:Is storing info in unrelated attached properties a code smell?将信息存储在不相关的附加属性中是一种代码味道吗?
【发布时间】:2010-09-01 20:11:24
【问题描述】:

我刚刚观看了一个名为How Do I: Use Attached Properties to Store Extra Data in WPF 的“操作方法”类型的 WPF 视频,它描述了当您想将两条信息与单个控件相关联时该怎么做。如果你想放入一条信息,他们说要使用 Tag 属性。

<Grid>
    <TextBox Tag="innerData">
</Grid>

很公平。

然后他们会说,“如果你想存储第二个数据,比如一个整数,会发生什么?”他们说,解决方案是使用未使用的附加属性。

<Grid>
    <TextBox Tag="innerData" Canvas.Top="55">
</Grid>

他们说因为它在网格中,所以没问题!我说“嘘!”这让我觉得非常讨厌……而且读起来很容易误导。这是常见的做法吗?

【问题讨论】:

  • “他们说因为它在网格中,没问题!” - 在那之后我嘴里有点想表达......

标签: wpf attached-properties


【解决方案1】:

是的,这是一种气味。

我不确定这是否常见——我以前从未见过。

坦率地说,我发现 Tag 本身就是一种框架认可的气味。

【讨论】:

  • 我同意,但我经常看到它,所以我接受了它。这对我来说似乎更糟,因为 Tag 并没有任何内涵,而 Canvas.Top 肯定有。
【解决方案2】:

它既快速又简单,但最好定义自己的附加属性或自定义控件来处理这些情况。对于原型或快速一次性应用程序来说,这种类型的事情是可以的,但如果代码将有一个需要维护的真实生命周期,则不应该这样做。

【讨论】:

  • 是的,我的意思是,对于你要扔掉的一次性应用程序,当然;什么都有,对吧?但我说的是实际应用;我的意思是,这就是视频的重点:“我如何:使用附加属性在 WPF 中存储额外数据”,这就是答案。让我觉得很丑。
【解决方案3】:

不是最佳做法。

我始终认为,代码(包括 Xaml)被编写为人类可读的。

要弄清楚谁在使用该属性以及用于什么目的需要进行大量研究。

【讨论】:

    【解决方案4】:

    这种技术可以真正节省时间。使用它会告诉你,“我不应该再浪费时间研究这些培训材料了。”

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多