[阅读随想] 动态语言 DSL 和 Xml 配置 / 仪式和本质
2008-04-21 00:54
337 查看
1. http://haacked.com/archive/2008/04/18/dynamic-language-dsl-vs-xml-configuration.aspx
2. http://blog.thinkrelevance.com/2008/4/1/ending-legacy-code-in-our-lifetime
现在我们的编程手法已经越来越复杂化,随着设计模式的普及,各种 Pattern,Dependency Injection 框架的应用越来越多,以至于我们可能会在开发一个简单的任务之前,就会考虑很多和任务本身不相干的问题。比如,创建对象是该用 new 呢,还是工厂模式,还是依赖注入?
这就是仪式(Ceremony)多于本质(Essence)的典型体现。这种做法和敏捷方法背道而驰。
在引文2中,列出了几种典型的“仪式”:
工厂模式(Java)
依赖注入 (Java)
getters 和 setters (Java)
annotations (Java)
冗长的异常处理 (Java)
类变量的特殊语法 (Ruby)
实例变量的特殊语法 (Ruby)
语句块第一个参数的特殊语法 (Ruby)
而在配置这个问题上,Rails 中很多配置用 yaml 配合 DSL 来写,比较直观灵活。而 Java/.NET 则传统的用 Xml 配置文件。
比如 .Net 中如果要在 config 文件中写一段自定义配置,需要做很多额外的工作。比如在 <configSections> 里面申明自定义节,实现自定义的 IConfigurationSectionHandler 类来解析节内容等,相当麻烦。
当然这么说并不是完全否定 Xml 配置。Xml 提供了完善的语义,在很多场合非常有用。比如用 Xaml 的方式来写 WPF 程序,就比写代码要省力的多。
如果在开发过程中,能遵循 TDD 的办法,则有可能在仪式和本质之间取得较好的平衡。显然,越能直接的解决本质问题,越少铺垫的框架,模式,我们的生活越轻松。
真的遇到需要模式的地方,我再 "Refactoring to Patterns" 也不算晚。总之,一切以满足 DRY 原则为目标。
2. http://blog.thinkrelevance.com/2008/4/1/ending-legacy-code-in-our-lifetime
现在我们的编程手法已经越来越复杂化,随着设计模式的普及,各种 Pattern,Dependency Injection 框架的应用越来越多,以至于我们可能会在开发一个简单的任务之前,就会考虑很多和任务本身不相干的问题。比如,创建对象是该用 new 呢,还是工厂模式,还是依赖注入?
这就是仪式(Ceremony)多于本质(Essence)的典型体现。这种做法和敏捷方法背道而驰。
在引文2中,列出了几种典型的“仪式”:
工厂模式(Java)
依赖注入 (Java)
getters 和 setters (Java)
annotations (Java)
冗长的异常处理 (Java)
类变量的特殊语法 (Ruby)
实例变量的特殊语法 (Ruby)
语句块第一个参数的特殊语法 (Ruby)
而在配置这个问题上,Rails 中很多配置用 yaml 配合 DSL 来写,比较直观灵活。而 Java/.NET 则传统的用 Xml 配置文件。
比如 .Net 中如果要在 config 文件中写一段自定义配置,需要做很多额外的工作。比如在 <configSections> 里面申明自定义节,实现自定义的 IConfigurationSectionHandler 类来解析节内容等,相当麻烦。
当然这么说并不是完全否定 Xml 配置。Xml 提供了完善的语义,在很多场合非常有用。比如用 Xaml 的方式来写 WPF 程序,就比写代码要省力的多。
如果在开发过程中,能遵循 TDD 的办法,则有可能在仪式和本质之间取得较好的平衡。显然,越能直接的解决本质问题,越少铺垫的框架,模式,我们的生活越轻松。
真的遇到需要模式的地方,我再 "Refactoring to Patterns" 也不算晚。总之,一切以满足 DRY 原则为目标。
相关文章推荐
- [阅读随想] 动态语言 DSL 和 Xml 配置 / 仪式和本质
- 读XML动态生成配置类
- Go实战--go语言中使用YAML配置文件(与json、xml、ini对比)
- AndroidManifest.xml配置文件详解-… 分类: Android开发 2014-05-30 10:54 46人阅读 评论(0) 收藏
- Struts2 方法动态调用,验证表签,xml配置Action
- Struts2 两个Action 动态传参数,在struts.xml中配置
- 使用java XMLDecoder实现应用程序的动态配置
- apk反编译生成程序的源代码和图片、XML配置、语言资源等文件
- apk反编译生成程序的源代码和图片、XML配置、语言资源等文件
- DropDownList从XML配置文件动态获取下拉列表值
- 动态web工程中servlet的web.xml文件的配置
- mybatis使用注解替代xml配置,动态生成Sql
- (转)Unity 导出XML配置文件,动态加载场景
- Flex中动态获取 services-config.xml中配置的ChannelSet
- 动态设置SSIS中,配置包的xml配置文件路径
- 动态结果配置:struts.xml中,<result>属性的type配置之redirectAction(请求重定向到指定的Action)
- 自制xml实现SQL动态参数配置
- Hibernate动态建表,通过hbm.xml配置文件创建数据表,进行数据库操作, 动态模型
- IBatisNet/IBatis动态条件查询XMl映射配置终极解决方案实例
- Maven中基于POM.xml的Profile来动态切换配置信息