【发布时间】:2011-03-09 06:26:55
【问题描述】:
任何没有合适反射机制的编程语言都会严重削弱快速变化的问题。
对于某些语言来说,似乎很难做到或不可能做到:
- 约定优于配置
- 自动数据绑定
- AOP/元编程
没有反射。
一些没有某种编程反射的示例语言是: C、C++、Haskell、OCaml。我敢肯定还有更多。
为了向您展示大多数这些语言违反 DRY(不要重复自己)的示例,您必须编写单元测试。您几乎总是需要在定义测试的地方之外的这些语言中注册您的测试用例。
这些语言的程序员如何缓解这个问题?
编辑:对于那些不知道的人来说,有反射的常见语言是:C#、Java、Python、Ruby,以及我个人最喜欢的 F# 和 Scala。
编辑:两种常见的方法似乎是code instrumentation 和代码生成。但是我从未见过 C 的检测工具。
除了投票结束,有人可以评论一下为什么应该关闭这个帖子,我会删除帖子。
【问题讨论】:
-
我们没有。我一直在 C 中重复自己。
-
@AShelly 你为什么要继续用头撞墙或用脚趾撞墙 :) 你能把你的语言换成别的吗?
-
我很好奇哪些语言可以把所有这些事情做得这么好?
-
@FrustratedWithFormsDesigner 但至少在这些语言中是可能的。 BTW JAXB 将任何 Java POJO 序列化为 XML 并将其内置到 Java 1.6 中。对于我列出的语言,我不能说同样的话。
-
@Adam Gent:我确实使用 Ruby 进行快速开发,但在实时嵌入式编程方面,C 是我雇主坚持的标准。我可以使用宏和指向结构的指针来减轻一些重复,但最终我仍然会得到多个非常相似的代码副本。
标签: c reflection aop dry