加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.51zhanzhang.com/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

无障碍编程:变量命名如何无声包容视障开发者

发布时间:2026-10-15 11:13:15 所属栏目:语言 来源:DaWei
导读:  去年七月,那个节点分布图上有个小红点,就在华东二区右下角偏三格的位置,压根没标名字,就一小坨——运维老周说可能是探针飘了,我说飘你妈,这玩意儿连告警都没过阈值。但那天我盯着它看了十七分钟,因为purge规则里第两百

  去年七月,那个节点分布图上有个小红点,就在华东二区右下角偏三格的位置,压根没标名字,就一小坨——运维老周说可能是探针飘了,我说飘你妈,这玩意儿连告警都没过阈值。但那天我盯着它看了十七分钟,因为purge规则里第两百零四条写的是“_tmp”,而盲用屏幕读器读出来就是“underscore T M P”,三个字母崩开念,像嚼碎的饼干渣卡在喉咙口。


  我原以为只要加个注释就行,结果读屏把注释当正文读了半分钟:“该变量用于临时存储……用户手势识别中间态……建议……”后面那段建议根本没读完,后端小陈手抖按错了tab键,整个IDE卡死三秒,读屏直接跳到编辑器底部的行号栏,“三千七百二十”,干巴巴地报出来,像丧钟。


  所以现在我看到变量名里带下划线的,第一反应不是看语义,是听节奏——单音节下划线+缩写(_id / _src)还行,但凡两个词拼一起,比如_userDataCache,读屏就给你切三刀:“underscore user data cache”,中间停顿比TCP重传超时还准。可人家盲用开发者不嫌烦?烦,但忍着。忍着忍着,就变成“这个系统本来就这样”,然后自己绕路写个 wrapper 函数来 alias ——你猜那个 wrapper 叫什么?叫“fixName”。真他妈好笑。


  跟老板拍账单那天,我把 purge 日志和读屏实录剪成双轨,放投影上同步播。老板盯着大屏上那个刚抖了一下、又稳住的“CDN缓存命中率”指标(0.2%的瞬时波动,监控都懒得告警),忽然问:“这事儿能折算进Q3 OKR吗?”我没接。我只说:“上个月十三次线上事故,七次跟前端变量命名有关;其中五次复盘记录里写了‘读屏误判导致状态未更新’,但没人改代码,全改了PRD备注。”他说“备注也得有版本管理啊”,我就把咖啡杯往桌上一蹾——杯底印着“CloudFast 2023 Tech Summit”,logo边上有条细微裂纹,从C字一直延伸到T字右下角的小点上。


文章配图,仅供参考

  对面厂商的销售打电话过来,声音特亮:“张工!你们用我们新出的A11y linting插件没?支持自定义命名白名单!”我嗯了一声,他马上补一句:“比上一代快十八毫秒!”我心想,快个屁,上一代根本没跑通读屏适配链路。但我没说破,因为上礼拜我亲眼见他坐小会议室里,把“a11y”手写成“ally”,还问旁边实习生“这个ally是不是要跟权限模块联动”。我当场没拆穿,但当天下午purge规则库里新增了三百七十二条带“ally”前缀的废弃字段。


  反常识结论是:无障碍命名根本不是为视障开发者服务的,是给系统“优胜劣汰”的筛子——你变量名敢用_、敢用缩写、敢混大小写、敢偷懒写getVal(),那你就等着被盲用流程反向教育。不是靠道德感召,是靠读屏强制降维:它不理解上下文,就逼你把上下文塞进名字里。UserLoginSessionExpiryTimeoutMs?难听是难听,但读屏一嘴报完,谁都不敢删中间一个词。我敢打包票:上季度所有上线后一周内被盲用团队提issue的模块,92%变量名含下划线;而被盲测组连续三次PASS的模块,命名最长的那个变量叫“currentLoggedInUserRoleWithTenantScopeOverrideFlag”,八十六个字符,三十七个音节——他们念的时候像朗诵诗,但我们部署时顺滑得像倒水。老李去茶水间倒水那会儿,CI流水线已经自动merge了。


  采购流程又改了,这次要求所有第三方SDK必须附带读屏兼容声明书,还得盖法务章。但你知道最搞笑的是啥?上月采购审批单附件里,有一份声明写着“本SDK已通过NVDA 2022.4及以上版本测试”,结果我们用JAWS实测发现,它把“error_code_404”读成“error underscore code underscore four zero four”,偏偏NVDA读成“error code four oh four”。两种读法都合法,可业务逻辑只认后者——于是故障日志里开始出现“Error: 'error code four oh four' !== 'error underscore code underscore four zero four'”,而这个报错本身,又被读屏切成六段反复读。我后来查了,这不是bug,是设计,故意留的。设计师叫阿哲,以前在盲校教过三年编程课。


  所以现在review PR,我不看接口设计图,就开读屏,让后端小张戴着耳机念他刚写的变量名。他念“_userConf”,我立刻截住:“conf是config还是confirm?”他愣了五秒,说“config”,我说:“那就写_fullUserConfig,多五个字母,省你下次debug两小时。”他翻白眼,但真的改了。不过话说回来,我也说不准那些真正长期用读屏的人到底怎么想——他们可能早就习惯了在噪音里听重点,就像我们习惯在告警风暴里盯住那一个绿灯。反正,节点图上那个小红点,上周消失了,没人修,也没人查,就那么没了。


  下周起,我要把所有purge规则里的下划线全替成camelCase,哪怕重构成本高,哪怕测试回归跑三轮。不是因为我突然高尚了,是因为上个故障单里,盲测组写的根因是:“变量名引发读屏语义断层,导致开发人员误判数据流方向”。而我的处理意见栏,只写了四个字:“照做。别吵。”

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!