我无法理解 clojure.spec 的意图。
它解决了哪些问题?
为什么我们应该使用它?
我无法理解 clojure.spec 的意图。
它解决了哪些问题?
为什么我们应该使用它?
spec 允许你创建数据和函数的规范。规范在本质上是基于已有 Clojure 谓词的预测性和结构化的,而不像你在静态类型语言中看到的基于类型。通过基于谓词来定义规范,你可以编写比大多数类型系统更具表现力的规范,并使用与你的代码相同的语言。
在函数上定义的规范指定了参数、返回值和参数及返回值的函数的规范。最后一个允许检查比大多数类型或合同系统还要广泛的事情(容易地)。
一旦你定义了规范,你可以使用它们来:
你可以使用规范来提高开发效率(通过澄清和记录你的意图、捕获无效调用和断言数据有效性)、测试效率(捕获无效调用、验证有效性、生成示例数据和为规范化函数生成自动测试)和生产效率(通过使用符合性进行解构)。
此外,Clojure 核心库对规范的使用将导致更好的错误消息和对核心库使用的扩展开发时间检查以更早地发现错误。