无障碍编程:变量命名如何无声包容视障开发者
|
去年九月份,我负责重构一个核心业务系统——团队里刚加入的视障开发者小李,需要独立承担部分模块的编码工作。项目启动会上,他提到自己使用屏幕阅读器时,最头疼的不是代码逻辑,而是变量命名——比如“tempData”这种缩写,屏幕阅读器会念成“T-E-M-P-D-A-T-A”,每个字母单独发音,像一串乱码;“userInfoList”这种驼峰命名,读起来又像“User-info-list”,断句混乱。他开玩笑说:“有时候光听变量名,得猜三遍才知道这是干啥的。” 这让我意识到,变量命名不仅是代码可读性的问题,更是无障碍编程的“隐形门槛”。传统命名规范(比如缩写、驼峰、下划线)对明眼开发者是效率工具,对视障开发者却可能变成障碍——屏幕阅读器的语音合成技术虽然进步,但遇到非标准命名时,仍会卡顿、误读,甚至直接跳过。比如“getUsrData”这种拼写错误(本意是“getUserData”),屏幕阅读器不会纠正,只会照读,小李就曾因此浪费两小时排查一个本不存在的“Usr”对象。
文章配图,仅供参考 我开始研究无障碍编程的变量命名规范,发现核心原则就一条:用完整的、自然语言的单词,避免缩写和特殊符号。比如用“temporaryData”代替“tempData”,用“userInformationList”代替“userInfoList”,用“getUserData”代替“getUsrData”。这听起来简单,但实测数据让我惊讶——在小李负责的模块中,采用无障碍命名后,他的代码提交错误率下降了42%(从平均每周5次降到3次),调试时间缩短了30%(从平均2小时/次降到1.4小时/次)。更关键的是,他不再需要频繁打断同事问“这个变量是干啥的”,团队沟通效率也提升了。但推广无障碍命名时,我遇到了阻力——有开发同事觉得“太啰嗦”,比如“temporaryData”比“tempData”多敲10个字母,影响编码速度。我拿小李的实测数据反驳:“多敲10个字母,换来的是视障开发者少花1小时调试,这买卖不亏吧?”更关键的是,无障碍命名对明眼开发者也有好处——去年团队接手一个遗留系统,变量名全是缩写,比如“custAcct”代表“customerAccount”,“invAmt”代表“invoiceAmount”,新成员接手时,光理解变量名就花了两天。如果当时用无障碍命名,这时间能省一半。 新技术的好处,往往藏在细节里。比如屏幕阅读器对“下划线命名”(user_info_list)的支持比驼峰命名更差——它会读成“user-underscore-info-underscore-list”,每个下划线都念出来,反而更混乱。再比如,变量名里的数字也要谨慎——小李曾遇到“data2023”这种命名,屏幕阅读器会念成“data-two-zero-two-three”,他得在脑子里把数字转成年份,增加了认知负担。我的主观判断是:无障碍编程的变量命名,本质是“用技术包容技术”——用更规范的命名方式,降低视障开发者使用技术的门槛,这不是妥协,而是让技术更完整。 当然,无障碍命名不是银弹。比如小李提到,有些业务术语本身是缩写(比如“KPI”),强行展开成“keyPerformanceIndicator”反而显得冗余;再比如,某些框架或库的变量名是固定的(比如React的“useState”),无法修改。这些情况需要具体分析,但核心原则不变:优先用自然语言,避免让屏幕阅读器“猜”变量名。 下一步,我打算在团队内推广无障碍命名规范,甚至考虑开发一个IDE插件——当开发者输入缩写或特殊符号时,自动提示更规范的命名方式。不过我也承认局限:屏幕阅读器的语音合成技术仍在进步,未来可能支持更智能的缩写识别(比如把“temp”自动读成“temporary”),但在此之前,我们得先做好“人”能控制的部分——毕竟,代码是给人读的,无论是用眼睛还是用耳朵。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

