《Hack与HHVM权威指南》——1.1 为什么使用类型检查器

简介:

本节书摘来自华章出版社《Hack与HHVM权威指南》一书中的第1章,第1.1节,作者 Owen Yamauchi,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.1 为什么使用类型检查器

关于对Hack语言类型检查器赞同的观点,听起来和对静态类型语言赞同的观点非常接近。类型检查器能够在不运行程序体本身的情况下,对错误进行查找和检查。所以在测试过程中,即使不运行代码,它也能够捕获问题所在。正是因为不需要去执行程序体,所以能够在程序开发的早期及时地捕获错误,这将大幅度地节约开发时间。静态分析的能力能够确保在模块边界没有破损,这使代码重构变得更加简单。
在最经典的争论中,所谓的缺点总是伴随着一些能够拖慢开发速度的特征。在能够正式运行程序之前,你不得不花费时间等待程序体进行编译。这依赖于程序所使用的编程语言及程序体本身的大小。同时,你必须在程序体内部给出所有变量的类型,这将使你的程序体更加冗长并且难以维护。
然而这些诟病在Hack语言中并不存在,这基于如下两点原因。第一点,类型检查器被设计成及时反馈的,即使在非常大的代码库内,也可以做到及时反馈。它使用的是“客户端/服务端”模型:类型检查的服务端在后台运行,并且时刻在监控文件系统的变化。当你编辑一个文件时,服务端会及时更新它在内存中对你的代码库的分析。在你准备运行程序的时候,分析已经完成了。客户端仅仅是简单地查询服务端,并且几乎瞬时展示分析的结果。这个“及时反馈”的功能很容易与各种程序编辑器和IDE合并。
第二点,Hack的变量类型标注是设计成渐进式的。你可以按自己的心愿使用这项功能。类型标注过的代码可以和没有类型标注过Hack代码或者PHP代码无缝对接。除此之外,你如果不标注本地变量类型,类型检查器会从它的上下文中推断出相关的类型。

相关文章