Lobsters | 原文链接 | 2026-09-09 收录

类型推断真的更好读吗?一位 HCI 研究者质疑「少写类型 = 提高可读性」

来源: austinhenley.com — 2019-06-27

概述

微软研究院的 Austin Z. Henley 对如今铺天盖地的类型推断提出质疑:Go、Rust、Swift、Zig 乃至后来的 C++11/C#3/Java10 都内置或后加了它,但几乎没有证据表明它能提升理解,反而可能妨碍理解、增加认知负荷。他指出读代码时常需要知道每个表达式的类型,可一旦用了 var/推断,遇到没有好名字的赋值就得跳去函数声明看返回类型、最坏还会做出错误假设——他给的例子里 `new Lazy<T>(() => MapEngine.CreateMap(...))` 就根本不是你以为的类型。IDE 悬停提示虽然能救场,但那本身也是一种认知成本;何况离开编辑器、在 GitHub 上看代码时你什么都没有。微软自己的立场也在变:自 2017 年起 Visual Studio 会建议「用显式类型替代 var」,MSDN 也主张用显式类型提升可读性、只在匿名类型上保留推断。他呼吁语言设计者在把类型推断当默认之前先做实证研究——这正是他正在做的 Knox 语言动机:宁可显式,不要简洁。

核心要点

金句

I argue that it may hinder comprehension and increase cognitive load.
返回 Lobsters 首页