无障碍编程:变量命名如何无声包容视障开发者
|
一三年那会儿,我跟老陈在西直门那个朝北的小屋里写脚本,风扇一直响,像台拖拉机挂了二档。他叼着烟敲键盘,我盯着那台飞利浦显示器——牌子我记不清了,只记得右下角掉漆,反光贼亮。变量名?全按缩写来:usr、prod、cfg、tmp。我说“usr”是user,他说“懂就行”,还顺手把一段爬虫里三个不同用户的处理逻辑全塞进一个叫u的变量里。屏幕朗读器?我们压根没装过。连IDE都不配语音反馈,全靠看——可那时没人说“视障开发者”这词,就像没人提“盲文版API文档”。我原以为命名只要自己不懵、上线不崩,就是好名字。结果去年二月份,有个听障+低视力的开发者加我微信,问:“你那个getUsrD(),D是detail还是data还是disabled?”我愣住。她没截图,就报了函数名,声音很平,但后面一句扎得我后脖颈发凉:“我听三遍语音合成器念出来,都没听清D代表什么。” 一七年改用VS Code了,插件生态起来,我们开始给变量加注释。那时候我和小林搭班子,她总在PR里批注:“请把val改成isEmailValid”。她眼睛不好,靠NVDA逐行读代码,一次读错就重来两分钟。我们当时觉得——呵,注释补上不就完了?可她有次摔了鼠标:“注释在上面,变量在下面,我得反复切上下文。你们写的flag1、flag2,语音读出来全是‘flag one’‘flag two’,谁分得清哪个控制邮件重试、哪个跳过验证码?”那会儿我嘴硬,回她:“那你开折叠啊。”她没接话,后来离职去了残联技术支援组。我删了她所有聊天记录,但没删那条消息。我走错的一步,就在这儿:一七年我真信了“加注释=无障碍”,没碰变量名这个骨头。其实那年已有W3C草案提“语义即路径”,可我把它当合规条款扫了一眼,就扔进收藏夹最底下。 二二年云服务普及了,团队扩到七个人,招了个坐轮椅的测试工程师老周。他不用读屏,但依赖键盘导航和高对比度主题。有天他推个PR,在handleX()旁边加了一行:// handleX: 指处理订单取消失败后的兜底动作(含重试+告警)。我看着想笑——太啰嗦。他回我:“不是啰嗦。是你写handleX()时,我Tab过去十次,第十一次才反应过来X是cancel_failed。而你们说‘X大家都懂’的那个‘大家’,不包括我。”那天下午我翻了团队三年来的变量名库,发现x出现过四十七次,含义从“异常计数”到“XML解析器实例”再到“未知错误码占位符”。优胜劣汰?它早开始了。淘汰的不是人,是那些靠默契活着的名字——它们活不过读屏器停顿0.3秒的间隙。 前两天翻硬盘,找到一三年那份爬虫脚本。老陈早不干这行了,听说去教中职编程,用大号字体+黄黑配色上课。小林还在搞无障碍测试,但换了家公司,微信头像变成一只导盲犬的剪影。我试着用NVDA读一遍当年写的tmpAtmpBtmpC,机器读成“temp A”“temp B”“temp C”,停顿一模一样。我突然想起,那间屋子的窗台上落着三层灰,没人擦,因为窗帘常年拉着——怕阳光晃屏幕。现在办公室全是自动调光玻璃,可有些暗处,还是得人自己伸手去摸。
文章配图,仅供参考 二二年之后,我们强推命名守则:布尔值必须is/has/can开头;状态变量带前缀active_ / pending_ / errored_;禁止单字母、禁止下划线数字组合如data_v2。但上个月新来的实习生交第一版脚本,里面冒出chkStat()。我抓起键盘想删,手悬在半空——去年二月份那个开发者,后来寄过一张盲文贺卡,摸不出来字,但背面印了句凸点:“别改太快,也别假装早都懂。” 我承认错了两次。第一次是一七年以为注释能扛;第二次是二二年以为守则一发就灵。其实最难的不是写规则,是每次敲let的时候,得先咽一口唾沫,再默念三遍:这个名,不靠眼神,单靠耳朵,能不能立住?现在这套我也拿不准还能干几年。毕竟NVDA刚升级了语义感知,下个月说不定连变量名的语法树都能读出声来——到时候,我们写的,就真得是“能听懂的代码”了。 (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


