zoukankan      html  css  js  c++  java
  • [阅读随想] 动态语言 DSL 和 Xml 配置 / 仪式和本质

    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 原则为目标。

  • 相关阅读:
    C#:foreach语句,yield语句
    C#:委托
    C#:事件
    fckeditor 添加上传附件功能
    电话号码 正则表达式
    设为首页,和加入收藏js代码
    sql中判断时间,精确到秒
    js 日期 星期
    那些惊艳的句子!
    .net 动态页面生成静态页面
  • 原文地址:https://www.cnblogs.com/RChen/p/1163101.html
Copyright © 2011-2022 走看看