当前位置:  开发笔记 > 编程语言 > 正文

鸭子类型作为反思的句法糖:好主意还是坏主意?

如何解决《鸭子类型作为反思的句法糖:好主意还是坏主意?》经验,为你挑选了1个好方法。

我最近一直在想,在Java和C#等语言中,它是一种很好的语法糖形式,包含一个"duck"类型作为方法参数类型吗?这看起来如下:

void myFunction(duck foo) {
   foo.doStuff();
}

这可能是通过反射调用doStuff()的语法糖,或者它可以以不同的方式实现.Foo可以是任何类型.如果foo没有doStuff()方法,则会抛出运行时异常.关键是,当您需要时,您可以获得更严格的预先指定的接口范例(性能,错误检查),即大多数情况下.与此同时,您将拥有一个简单,整洁的后门来进行鸭子打字,这样您就可以在没有大规模重构的情况下干净地进行初始设计中无法预见的更改.此外,它可能是100%向后兼容并与现有语言结构完全啮合.我认为这可能有助于减少过度设计的简单编程风格,从而导致令人困惑,混乱的API.



1> Bryan Watts..:

dynamic关键字支持这些确切的语义,并将在C#4.0中.

不过,这不仅仅是为了反思.它是动态分派的一种实现,只有在没有其他机制可用时才使用反射.

这个问题也有很多好的信息.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有