什么是Clojure规范?

时间:2016-06-12 09:09:06

标签: clojure functional-programming clojurescript specifications clojure.spec

我无法理解 clojure 的意图。规范

它解决了哪些问题?

我们为什么要使用它?

2 个答案:

答案 0 :(得分:26)

规范允许您创建数据和功能的规范。规范是它们的核心预测(基于现有的Clojure谓词)和结构,而不是基于类型,正如您在静态类型语言中看到的那样。通过基于谓词的规范,您可以编写比大多数类型系统更具表现力并使用与代码相同的语言的规范。

在函数上定义的规范指定了args的规范,返回值以及args 返回的函数。最后一个允许检查比大多数类型或合同系统中检查的更多范围(容易)。

定义规格后,您可以使用它们:

  • 根据规范
  • 检查值是否有效
  • "顺应"一个值,它为您提供值
  • 的已解析和结构化版本
  • 详细解释为什么某个值不符合规范(作为字符串,stdout或数据)
  • 使用描述性规范增强功能文档
  • 从规范
  • 生成示例数据
  • 在开发中断言一致性,但在生产中将其关闭
  • 检测开发中的无效调用或测试已检测的函数
  • 为规范功能生成并运行基于属性的测试
  • 开发将仪器和测试生成与存根和模拟设施相结合的测试

您可以使用规范改进开发(通过澄清和记录您的意图,捕获无效调用,断言数据有效性),测试(捕获无效调用,断言有效性,生成示例数据,并为您的规范生成自动测试#39; ed函数),以及您的生产(通过使用一致性进行解构)。

此外,Clojure核心使用规范将导致更好的错误消息,并扩展核心库使用的开发时间检查,以便更早发现错误。

答案 1 :(得分:8)

关于规范库的那些问题有点广泛,特别是"我们为什么要使用它"部分。 你读过以下内容吗?