html dsl_DSL丛林

html dsl

DSL是当今编程世界中的常见事物。 许多框架和工具决定为……特定的事物构建DSL。 构建工具是主要的候选者,但是测试框架,Web框架和其他工具也决定了DSL的定义。 使用这些DSL,您可以定义构建步骤,Web路由规则,测试接受标准等。

所有这些DSL最常见的事情是什么? 两件事情。 首先,它们主要是关于配置。 一种特定于工具或框架的特定配置方式。 第二件事是您复制粘贴代码。 每当我遇到一些旨在帮助我完成编程任务的DSL时,我最终都会粘贴粘贴示例或现有代码,然后对其进行修改。 即使我一直(不时地)使用DSL 8个月,但我只是不记得它的语法。

您可能会说“是的,那是因为您使用了不良的DSL”。 好吧,那我还没有看到好的。 我目前正在使用sbt,喷雾路由,用于scala的Cucumber,之前我使用过Groovy和Grails DSL,以及其他一些方法。

但是,复制粘贴现有代码段是否很糟糕? 不总是。 当然,您可以基于现有的工作件进行配置。 但是存在三个问题–重复代码,自动完成和探索。 您知道粘贴粘贴是错误的,并导致重复。 不仅如此,您还可能忘记更改或删除粘贴的代码中的某些内容。 而且,如果您想添加一些属性,那么最好能够自动完成它,而不是大惊小怪或忘记它是“ filePath”,“ filepath”,“ file-path”还是“ path” 。 在一个大型项目的一部分中有2-3个DSL,您可能不记得所有属性名称,因此,另一种方法是去查看文档(如果您没有具有该特定属性的工作部件,则可以从中复制粘贴)。 探索是一个更大的问题。 尤其是在学习或记住如何使用给定DSL执行某些操作时,至关重要的是能够探索各种可能性。 它具有什么属性,可能有用? 此属性的作用是什么?它具有子属性吗? 我可以在这个物品下面套些什么? 无论您对工具/框架的了解如何,这都非常重要。

但是对于大多数DSL,您却没有。 它们要么具有某种怪异的语法,要么基于JSON,或者看起来像您所使用的语言,但并不完全相同,因此,即使是IDE也很难理解它们(如例子)。 您可以查看文档,也可以复制粘贴,或两者兼而有之。 在这种“凉爽”的DSL可以处理各种各样的事情的DSL丛林中,您有点迷失。

现在,我将放下X炸弹。 我喜欢XML。 信任“ XML配置文件是邪恶的”模因已经导致了许多难以理解的配置,即“简短易读和写”。 很容易,如果您还记得那些双百分号与单百分号相比的含义以及在括号中的确切位置。

在几乎每个人都认为DSL是个好主意的情况下,XML都会表现出色。 使用XSD模式(我同意编写该代码有点麻烦),您可以将任何支持XML的工具转换为IDE进行配置。 以maven pom文件为例。 您是否忘记了可以在“构建”下嵌套的元素? 按CTRL +空格键,您将找到答案。 统一起来,您可以读取使用它的任何框架或工具的XML配置,而不仅仅是这个特定的框架或工具,即单个项目中的第n个DSL。 尽管XML非常冗长,但它简单明了且标准。

因此,如果您正在编写工具,并且无法通过注释或非常简单的代码(构建器,设置器,流畅的接口)提供某些配置,请不要使用DSL。 不要在可以轻松使用XML的地方编写DSL。 它在您的README.md上看起来不错,但是您的用户将一直复制粘贴,并且实际上可能会讨厌它。 因此,请不要为DSL丛林做贡献。

你知道为什么吗? 请记住最初的说明,这些是您在编程时使用的DSL。 嗯,DSL不适合程序员。 DSL供非程序员使用(几乎)散文表达业务逻辑。 或者至少将它们的使用范围限制在它们可以真正发挥作用的地方。 如果您要为业务分析师设计工具,请随意设计最出色的DSL。 如果要为程序员构建工具,请不要这样做。

翻译自: https://www.javacodegeeks.com/2014/10/the-dsl-jungle.html

html dsl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值