无障碍编程:变量命名如何无声包容视障开发者
|
去年春节那会儿,群里突然冒出来个需求——得给咱们项目加个无障碍模式,说是要兼容视障开发者用屏幕阅读器读代码。我当时正盯着编译进度条卡在百分之九十八,外卖小哥电话又打进来,心里直犯嘀咕:这帮产品经理是不是闲的?变量命名还能搞出什么花样?结果后端老张先跳出来,说他在GitHub上见过类似讨论,有开发者因为变量名全用缩写,屏幕阅读器读出来全是乱码,直接在Issue里骂街。 那天下午我边改bug边琢磨这事儿。咱们平时写代码,变量名恨不得用三个字母搞定,比如`tmp`、`idx`、`res`,省事儿是省事儿,可屏幕阅读器读出来全是“tmp”“idx”“res”,跟念密码似的。我原以为视障开发者能靠上下文猜,结果老张甩过来个链接——有个盲人工程师在Medium上写,他每次读到`userInfo`都得停下来想:“这是用户信息?还是用户输入?还是用户状态?”得,咱们觉得“简洁”的命名,对人家来说简直是障碍赛。 群里突然有人发了张“裂开”表情包,说是测试环境白屏了。我切过去看了眼,发现是埋点代码里变量名冲突,`event`和`evt`混着用,屏幕阅读器读出来全乱套。设计小妹凑过来问:“你们说的无障碍,是不是得像咱们做UI那样,考虑颜色对比度?”我摇头说:“比那麻烦多了,变量名得让机器能‘读’明白,还得让人能‘听’明白。”她撇嘴:“那你们平时写的代码,岂不是全得重写?” 我原以为这事儿得大改,结果老张说不用。他翻出咱们项目的代码库,指着一段说:“你看这`totalCount`,屏幕阅读器读出来是‘total count’,多清晰。再比如`isLoading`,读出来是‘is loading’,一听就知道是状态。反倒是那些缩写,像`cnt`、`ldg`,读出来全是‘cnt’‘ldg’,谁知道是啥?”我盯着屏幕看了半天,突然发现咱们平时写的“好代码”,其实早就符合无障碍标准——只要别用缩写,别用模糊的词,变量名能准确表达意思,屏幕阅读器就能读顺。 窗外开始下雨,敲键盘的声音混着雨声,有点吵。我翻到去年写的代码,里面有个`userData`,当时觉得挺普通,现在听老张一说,突然觉得这名字起得妙——屏幕阅读器读出来是“user data”,比`uData`清楚多了。后端老李插嘴:“那咱们以后是不是得禁用所有缩写?”我摇头:“也不用,像`i`、`j`这种循环变量,屏幕阅读器读出来是‘i’‘j’,不影响。关键是业务相关的变量,得用全称。”
文章配图,仅供参考 说到这儿,我突然想起上个月招聘的事。有个候选人代码写得挺溜,但变量名全用拼音缩写,比如`yhxx`代表“用户信息”,`ddzt`代表“订单状态”。我当时没当回事,现在想想,这要是让视障开发者读,不得抓狂?下次面试得加条:变量名必须用英文全称,缩写得有注释。老张笑说:“你这要求够高的,好多老程序员都改不过来。”我撇嘴:“改不过来就被淘汰呗,优胜劣汰嘛。”群里突然有人喊:“灰度环境部署好了!”我切过去看了眼,发现新加的变量名全改成了全称,比如`orderTotalAmount`代替了`ota`,`userLoginStatus`代替了`uls`。测试小妹发消息说:“屏幕阅读器读起来顺多了,再也不用猜变量名啥意思了。”我松了口气,原来无障碍编程不是额外加功能,而是把平时该做的事做到位——变量名清晰、准确、无歧义,对所有人都有好处,不只是视障开发者。 现在回头看,这事儿没那么复杂。咱们平时写代码,本来就该避免用缩写、避免用模糊的词,变量名能准确表达意思,代码可读性就高。屏幕阅读器只是把这个问题放大了——它不会“猜”,只会“读”,所以变量名必须得让机器和人都能理解。我原以为无障碍编程是“特殊需求”,结果发现它是“基本要求”,只不过咱们以前没意识到而已。 下一步怎么改?我打算先从新代码开始,强制要求变量名用全称,缩写必须加注释。老代码的话,慢慢重构,遇到bug就顺便改变量名。老张说:“你这计划够佛系的。”我笑:“急不得,得让大伙慢慢适应。再说了,代码质量提高了,对所有人都有好处,何乐而不为?”窗外雨停了,风扇声又响起来,我盯着屏幕,突然觉得写代码这事儿,有时候得跳出“程序员”的视角,想想别人怎么用——包括那些看不见代码的人。 (编辑:我爱资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


