首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您认为C#属性(或类似的机制)是一个好主意,还是不鼓励使用它们?

您认为C#属性(或类似的机制)是一个好主意,还是不鼓励使用它们?
EN

Stack Overflow用户
提问于 2009-04-17 18:04:35
回答 7查看 1.4K关注 0票数 3

在过去的4到5年里,我已经开发了很多使用C#属性的设计和框架。

但最近,我看到许多人公开反对使用它们,或者改变他们的框架,以减少对它们的需求或使用。

我发现它们是天赐之物,但现在我开始想知道我错过了什么。

需要澄清的是:使用约定而不是配置正在成为一个需要遵循的主要原则,尤其是在ORM领域。您可以使用配置文件(XML)映射字段,使用属性,或者具有直接映射到数据库表中的字段的通用命名约定。我没有任何可以引用的引用,但我读到了一些反对在混合中添加另一个属性的强烈反对意见。

但我觉得,在我刚刚列出的三个选择中,属性仍然是最有意义的。Config文件更难维护,而且一个通用的命名约定将您与数据库字段的实现联系在一起。属性被准确地放置在需要它们的地方,并且实现可以在不断开使用它的地方的情况下改变。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-04-17 18:24:44

属性实际上有两个目的:作为用户可见的东西,以及作为编译器发出的东西。

我假设你说的是用户可见的属性。

一般来说,我会说用户可见的属性并不理想。

大多数时候,它们被用来在C#之上嵌入某种形式的自定义语言。DLINQ属性就是一个很好的例子。从消费者的角度来看,一种更好的方法是向宿主语言添加一流的支持。这最终会让人感觉自然得多。(与所有疯狂的linq- to -sql属性相比,具有对定义表和外键的语言支持要容易得多)。

然而,在现实中,对于大多数开发人员来说,扩展编程语言的成本太高了。好处并不会超过成本。

也许有一天C#会有元编程功能,这将使做这类事情变得容易。

然而,目前这种能力还不存在。

这给你留下了3个选择:

  1. Use attributes
  2. 使用动态语言,并在运行时生成代码
  3. 只是不使用生成式编程

通常情况下,#1最终是最容易做出的选择,即使它并不理想。

票数 3
EN

Stack Overflow用户

发布于 2009-04-17 18:08:26

这是一个很难给出一般答案的问题。属性是另一种语言功能,如果使用得当,它会非常强大,但也有可能被滥用。我从来没有看到过一个令人信服的理由完全抛弃属性的使用,也确实没有理由认为它们是一个坏主意。

事实上,事实恰恰相反。属性允许将框架特定的信息添加到元数据中。无法通过类型层次结构轻松表达的信息。这极大地增强了使用属性的框架的能力。

我肯定看到过一两个实现,人们滥用了它们,但并不壮观。你能说得更具体些吗?有没有你正在谈论的特定属性/框架。

票数 7
EN

Stack Overflow用户

发布于 2009-04-17 18:09:09

这是一个相当宽泛的问题,就像“我应该在砂锅里放奶酪吗”;对这两个问题的答案都是“这取决于你做的是什么”。

如果您大量使用添加,并且几乎像使用声明性编程范例一样使用它们,那么在此过程中您可能会遇到麻烦。无论它是来自于反射中的某个地方的速度减慢,还是仅仅是一般的可维护性,每个人都在猜测。

当它们合适的时候,就像所有的东西都else...use它们,使你的代码更有效率或可读性。不要为了使用而使用它们,也不要为了抛弃它们而放弃它们。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/761537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档