如何避免在Scala中编写令人困惑的DSL

问题描述 投票:4回答:1

我读过评论,指出Scala的灵活性使开发人员可以轻松编写难以理解和推理的DSL。

DSL是可能的,因为

  • 我们可以sometimes省略.和括号(例如List(1) map println
  • 我们可以sometimes互换(){}
  • 我们有隐含的值,参数和类(也是转换,它们是now discouraged
  • 语言中有一个relatively small保留符号(例如我可以为我的班级定义+

可能还有其他语言功能。

我怎样才能避免编写令人困惑的DSL ...什么是常见的反模式? DSL在哪里不合适?

scala dsl software-design
1个回答
0
投票

每当你创建自己的DSL时,你就会在Scala中嵌入新语言,这不是标准的,所以它不遵循standard code guides,约定等。

我想说,只要添加适当的文档,解释创建它的目的并添加使用示例,添加新DSL就没有错。如果你觉得添加新的DSL可以提高代码的可读性,那就去吧,但是请记住,每当有人遇到你的DSL并且没有足够的文档记录时,他们会非常困惑。

良好记录和服务良好用途DSL的一个很好的例子是matchers of scalatestScala duration

© www.soinside.com 2019 - 2024. All rights reserved.