无障碍编程:变量命名如何无声包容视障开发者
|
上周五在V2EX看到个帖子,标题直接戳肺管子——“变量名用拼音缩写,是歧视视障开发者吗?”。我原以为又是哪个键盘侠在带节奏,结果点进去发现是2025年7月某大厂内部复盘通报的截图,里面详细记录了因为变量名全用拼音缩写(比如`yhzh`代替`userAccount`),导致视障工程师小王在屏幕阅读器下完全无法理解代码逻辑,最后项目延期三天的事故。这事儿能上内网通报,说明不是个例——我敢打包票,现在至少一半团队还在用拼音缩写变量名,觉得“反正大家能看懂”,结果呢? 机房的冷风嗖嗖往脖子里灌,我边搓手边翻评论区。有人说“拼音缩写是中文编程的特色”,有人说“视障开发者可以用语音辅助工具”,最离谱的是有个ID叫“前端小能手”的,说“变量名本来就是给机器看的,人能看懂就行”。我差点把手机摔了——这帮人是不是没跟视障开发者合作过?我原以为屏幕阅读器能直接读变量名,结果去年跟盲人工程师小李合作时才知道,这玩意儿只能逐字读,遇到`yhzh`这种缩写,读出来是“一、和、之、喝”,完全没逻辑。小李当时跟我说:“我宁可变量名是英文全拼,至少能拼出‘user’‘account’这种词,拼音缩写就是故意设障碍。” 这事儿让我想起2023年踩的坑。当时我们组接了个紧急需求,要在一周内重构一个核心模块。原代码变量名全是拼音缩写,比如`sjk`(数据库)、`sj`(数据)、`sjcx`(数据查询)。我原以为“反正功能正常,变量名乱点也没事”,结果小李接手后直接炸毛——他屏幕阅读器读出来的代码全是“一、和、之、喝”“三、几、可”“三、几、吃、西”,根本没法理解业务逻辑。最后我们不得不花两天时间重命名变量,把`sjk`改成`database`,`sj`改成`data`,`sjcx`改成`dataQuery`。改完小李说:“现在我能跟着代码逻辑走了,虽然慢点,但至少能干活。” 告警群突然99+,我放下手机去处理。回来时看到评论区有人反驳:“那视障开发者怎么不用英文变量名?”我差点笑出声——这帮人是不是觉得所有开发者都能无障碍读写英文?小李跟我说过,他大学学的是计算机,但英语是弱项,看英文文档得靠翻译工具,写代码时变量名全用英文,反而容易拼错(比如把`account`写成`acount`)。而拼音缩写更坑,因为缩写没有统一标准,`yhzh`可能是`userAccount`,也可能是`yieldValue`,甚至可能是`yearZero`——连明眼开发者都得猜,更别说视障开发者了。
文章配图,仅供参考 我原以为“优胜劣汰”是自然规律,变量名用拼音缩写的团队迟早会被淘汰,结果现实狠狠打了脸。上周跟某大厂的朋友吃饭,他说他们组现在还在用拼音缩写,理由是“老代码都是拼音,改起来成本太高”。我问:“那新代码呢?”他说:“新代码也用拼音,不然跟老代码风格不统一。”我当场就无语了——这哪是“统一风格”,分明是“劣币驱逐良币”。更离谱的是,他们组还有个视障实习生,入职三个月没写过一行代码,因为变量名全是拼音缩写,他根本看不懂。食堂的剩饭凉了,我端着盘子找位置。突然想到个问题:为什么拼音缩写能流行这么多年?可能是因为明眼开发者觉得“拼音是母语,更亲切”,或者“缩写能节省打字时间”。但这些理由在视障开发者面前完全不成立——屏幕阅读器读拼音缩写和读英文全拼的时间差不多,而缩写带来的理解成本却高得多。小李跟我说过:“我宁可多打几个字母,也不想听屏幕阅读器读‘一、和、之、喝’。” 回到工位,我翻出2024年写的代码,发现里面还有几个拼音缩写变量名——`dz`(地址)、`lx`(类型)、`sj`(时间)。我当场就改了,把`dz`改成`address`,`lx`改成`type`,`sj`改成`time`。改完突然有点后怕:如果这些代码被视障开发者接手,他们得花多少时间猜变量名的意思? 有人说“视障开发者是少数群体,没必要为他们改变代码风格”,但我想说:代码是给人看的,不是给机器看的。变量名的第一原则是“可读性”,第二原则才是“简洁性”。拼音缩写连“可读性”都做不到,更别说“简洁性”了。我敢打包票,现在还在用拼音缩写变量名的团队,迟早会因为代码难以维护、新人难以接手而付出代价——优胜劣汰的规律,在编程领域同样适用。 UPS的嗡鸣声突然变大,我抬头看了眼监控屏,一切正常。低头继续写代码时,突然想到:下次组内代码评审,我得加个规则——变量名必须用英文全拼,拼音缩写直接打回。不为别的,就为让视障开发者能少猜点变量名的意思,能多写点有价值的代码。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


ASP无障碍设计:视障开发者高效调试新范式
