<分区>
我发现任何没有合适反射机制的编程语言都会严重削弱快速变化的问题。
对于某些语言来说,它似乎很难或不可能做到:
- 约定优于配置
- 自动数据绑定(bind)
- AOP/元编程
没有反射(reflection)。
一些没有某种编程反射的示例语言是:
C、C++、Haskell、OCaml。我敢肯定还有更多。
为了向您展示 DRY(不要重复自己)被大多数这些语言违反的示例,您必须编写单元测试。您几乎总是需要在您定义测试的地方之外用这些语言注册您的测试用例。
这些语言的程序员如何缓解这个问题?
编辑:对于那些不知道的人来说,确实有反射的常见语言是:C#、Java、Python、Ruby 和我个人最喜欢的 F# 和 Scala。
编辑:这两种常见的方法似乎是 code instrumentation和代码生成。但是我从未见过 C 语言的工具。
除了投票关闭,有人可以评论为什么应该关闭这个帖子,我会删除帖子。
你不知道。
但是您可以让重复项彼此靠近,这样当更改某些内容时,您会发现其他内容也必须更改。
例如,我编写了一个输出对象的 JSON-Parser,典型的调用如下所示:
struct SomeStruct
{
int a;
int b;
double c;
typedef int serializable;
template<class SerializerT> void serialize(SerializerT& s)
{
s("a",a)("b",b)("c",c);
}
};
当然,当您添加一个字段时,您必须在函数中添加另一个字段,但也许您不想序列化该字段(这在使用反射的语言中也必须处理),并且如果你删除一个字段而不从函数中删除它,编译器会提示。