我已阅读评论,指出Scala的灵活性使开发人员可以轻松编写难以理解和推理的DSL。
DSL之所以可行是因为
.
和括号(例如List(1) map println
)()
和{}
+
)以及其他语言功能。
如何避免编写令人困惑的DSL……常见的反模式是什么? DSL在哪里不合适?
答案 0 :(得分:0)
每当您创建自己的DSL时,您都将 new 语言嵌入到Scala中(这不是 standard ),因此它不会遵循standard code guides,约定等
我要说的是,只要添加适当的文档,说明创建目的以及添加用法示例,添加新的DSL并没有什么错。如果您觉得添加新的DSL可以提高代码的可读性,那么就去做吧,但是请记住,只要有人遇到您的DSL且文档记载不足,他们就会非常困惑。
matchers of scalatest或Scala duration是记录良好且服务良好的DSL的一个很好的例子。