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

简介:

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

1.1 为什么使用类型检查器

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

相关文章
|
Ubuntu 网络安全
百度搜索:蓝易云【ubuntu系统ufw开放端口教程】
现在,你已经成功在Ubuntu系统中使用ufw开放了指定的端口。请确保只开放必要的端口,并注意网络安全。
733 3
|
存储 数据库 Python
怎么解决字符乱码的问题
怎么解决字符乱码的问题
897 0
|
网络协议 Ubuntu Linux
【Linux】cpolar+JuiceSSH实现手机端远程连接Linux服务器
【Linux】cpolar+JuiceSSH实现手机端远程连接Linux服务器
|
数据采集 数据可视化 大数据
Python在大数据处理中的应用实践
Python在大数据处理中扮演重要角色,借助`requests`和`BeautifulSoup`抓取数据,`pandas`进行清洗预处理,面对大规模数据时,`Dask`提供分布式处理能力,而`matplotlib`和`seaborn`则助力数据可视化。通过这些工具,数据工程师和科学家能高效地管理、分析和展示海量数据。
728 4
|
SQL 安全 前端开发
全栈开发者必看!前后端表单交互的最佳实践与安全考量,开启高效稳定开发之旅!
【8月更文挑战第31天】全栈开发者在软件开发中扮演着重要角色,需精通前端与后端技术。表单交互是常见的开发场景,涉及从设计直观表单到处理数据等多个环节。前端应使用清晰标签和验证提示提升用户体验,如用红色星号标示必填项;后端需严格验证数据并处理细节,如去除空格和转换类型。此外,安全防护同样关键,包括防止脚本注入和SQL攻击。遵循这些最佳实践,全栈开发者能构建稳定、安全的应用程序,不断提升用户体验。
343 1
|
前端开发 JavaScript 测试技术
107-Django开发医院管理系统(医生-患者-医院管理员)
该内容描述了一个基于Python和Django的医疗管理系统的开发步骤。主要涵盖以下关键点: 1. 环境搭建:安装Python和Django,创建项目和应用。 2. 数据库模型:设计用户、医生、患者、发票和预约等模型。 3. 用户认证和权限:使用Django内置系统,创建自定义角色和权限。 4. 视图和模板:处理用户请求,渲染HTML页面,包括医生列表、患者注册、管理界面等。 5. 表单处理:创建表单处理用户输入,验证数据并保存到数据库。 6. PDF生成:利用xhtml2pdf库生成治疗发票的PDF。 7. 路由配置:设置URL路由以连接视图。
388 7
107-Django开发医院管理系统(医生-患者-医院管理员)
|
人工智能 编解码 API
通义万相AIGC技术测评报告
**摘要:** 通义万相是阿里云的AI绘画模型,提供清晰的部署指南和易用的API,适合新手。资源部署耗时约10分钟,API响应快,支持多种风格图片生成,适用于广告、媒体等领域。产品性价比高,功能包括文本到图像转换等,但仍有改进空间,如增加服装纹理选项、互动功能和更多API接口。建议完善功能、加强推广和降低成本以吸引更多用户。[链接](https://developer.aliyun.com/topic/tongyi-wanxiang?spm=a2c6h.27063436.J_6978680750.5.3a774f461hv8qD)
1465 6
【Simulink】飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)
【Simulink】飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)
|
Java 编译器 数据安全/隐私保护
Java语言包(Package)深入解析
Java语言包(Package)深入解析
591 0
|
存储 算法 数据处理
Python中的列表(List) 类型详解与实战应用
Python中的列表(List) 类型详解与实战应用
531 0

热门文章

最新文章