快速业务通道

演化架构与紧急设计: 语言、表达性与设计 - 第2部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
gin     yield self     ensure     set_interface(oldinterface)    end   end end

清单 15 中比较有趣的地方是开放类 Class 定义的结束部分:为指定方法赋予了另一个名称(基于接 口),然后通过代码将它从代码中删除。更加有趣的代码出现在 InterfaceSwitching 中: set_interface 方法为在 with_interface 方法中创建的代码块的作用域重新定义了原始(重命名的)方 法。最后的 ensure 代码块是 Ruby 版本的 finally 代码块。

此练习的目的并不是深入探讨 Ruby 中的充满魔力的元编程,而是演示表达性极佳的语言能实现哪些 功能。解释语言始终比编译语言具有更大的优势,因为它们可以执行编译语言无法执行的代码。事实上, Groovy 引入了一种编译时元编程机制,即 AST Transformations。

结束语

本文的所有这些论述证明了什么呢?在各种语言中,表达性就相当于其能力。本文中介绍的许多技巧 都是 Java 语言所不支持的,甚至使用 Javassist 等工具提供的字节码生成功能也无法从技术上实现它 们。但是,使用这些机制来解决问题可以说是极其麻烦的。此态度也影响了惯用模式。即便您可以看到特 定于应用程序的模式,但如果获得收益的方法过于困难,则会让您的项目背上数不清的技术债务。表达性 对计算机语言的重要性是不言而喻的!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号