类型系统是另一种注释
我越来越觉得,类型系统最实用的地方不是证明程序绝对正确,而是把一些容易忘记的假设写在代码里。
注释会腐烂,类型会被检查
注释可以写“这个函数不会返回 null”,但编译器不会因此多看你一眼。类型标注则会在调用点提醒你处理空值、区分单位、避免把用户 ID 和帖子 ID 混在一起。
这并不能消灭 bug。类型正确的程序仍然可能逻辑错误、性能糟糕、语义不符合用户预期。但它能消灭一整类低级的、靠记忆维持的约定。
类型是交流工具
在团队里,类型还是一种异步沟通。后来的人读函数签名,就能知道输入的范围和输出的形状,不必先猜作者当时的心情。泛型和联合类型用得好时,代码会自己解释边界。
当然,类型也可能变成另一种噪音:为了通过检查而堆砌断言,或者把简单问题包装成复杂的类型体操。好的类型设计应该让调用者更自由,而不是让维护者更害怕改动。
类型不是注释的替代品;它是那些必须被机器反复确认的注释。


评论
登录后可以评论,也可以回复某条评论。
还没有评论
说说你的看法,或者指出文中没有说清的地方。