无障碍编程:变量命名如何静默赋能视障开发者
|
前年在西溪园区那间玻璃会议室,投影仪老是自动休眠,王工第三次按遥控器的时候,空调滴水声特别响——咚、咚、咚,跟敲代码的回车键似的。我原以为就是换个变量名的事,结果盲文终端一读出来,整个逻辑链全乱了。 当时改的是个订单状态机,原名叫 stat,仨字母,看着清爽,审稿时主编说“这个得改”,我说好,改成 orderStatus。他摇摇头:“太长,影响阅读节奏。”我顺手改成 os,他眼睛一亮:“这个行!”——结果转头就被视障同事老周当场堵在茶水间:“你管这叫可读?os 是操作系统还是订单状态?我靠语音朗读每秒十八秒停顿一次,你写完代码自己用听的试试?” 打印机卡纸了,卡在第三页,上面印着我们刚交的无障碍适配白皮书初稿。小陈端着酸辣粉进来,筷子尖还挂着红油,往桌上一放就说:“周老师刚发来一段TTS日志,读‘usr’读成‘user’,读‘usrid’读成‘U-S-R-I-D’,中间顿三下,像点名。”我盯着那行字看半天,才想起来——是我们上个月上线的用户中心,把 user_id 硬缩成 usrid,就为省两个字符。这个我敢打包票,当时评审会上李总监还夸“命名收敛,边界清晰”。 微信弹了个群消息,是“云原生架构讨论组”,有人甩了张截图:某厂开源库的变量名——cur、tmp、res、val。底下一行小字备注:“已通过自动化无障碍扫描”。我截图发给老周,他秒回:“扫出来是扫出来了,可我的JAWS根本不会告诉你这是个啥。”——对,工具能检测长度、驼峰、是否含下划线,但它不认语义。它不知道 cur 是 current_user 还是 cursor_position,更不关心你删掉一个下划线,别人就得重听三遍。 所以什么叫“静默赋能”?不是加个alt标签那种显性动作。是让变量名自己开口说话——不靠工具提示,不靠注释补救,就靠它自己站在那儿,被朗读、被跳读、被盲文终端摸过去,就能让人知道它是谁、在哪、干啥。order_id、payment_status、is_refunded —— 没有歧义,没有缩写陷阱,没有双关梗,不玩谐音,不蹭热词,不塞英文缩略。它不抢KPI,不刷日更指标,不凑原创度检测里的字符熵值,就安安静静当个路标。 上次排专题,主编让我搭个“低代码无障碍实践”选题,我说先拆解下变量命名链路,他摆摆手:“太细,读者没耐心。”结果那个专题上了首页,三天后下架——平台审核驳回理由写得明明白白:“核心示例未覆盖语音交互路径”。我翻记录才发现,他们连那段代码的变量名都没过一遍,只扫了页面标题和首屏截图。那个标题我改了七版:“低代码×无障碍:一键生成友好界面”“手把手教您打造听得懂的系统”“听见即所见:无障碍开发实战”……最后定稿那天中午,窗外梧桐叶掉进通风口,卡住一半,嗡嗡响了半分钟。 老周前两天发来一段录音,是他用NVDA读我们新接口文档里一段伪代码——变量叫 dataRes、retVal、outMap。他边听边笑:“你们管这叫工程规范?听着像密码本。”我说我们内部其实早有约定,“dataRes”必须带类型注解,他说:“我不看注解。我按Tab键一个个跳,跳到哪读到哪,你注解再全,跳不过去。”——这话我记住了。不是所有东西都该被“跳过去”。有些变量名,天生就该等一等听的人。 李总监上月团建喝多了,拍我肩膀说:“你们做云架构的,总讲究资源调度优先级。变量命名也一样啊,优先级不是给CPU看的,是给人耳听的。”我点头说对,其实心里想:他压根没试过关掉屏幕只用VoiceOver写五十行处理逻辑。他不知道,光是分不清 a 和 A(audio vs area)就能卡住三分钟。也不知道,某些IDE的自动补全在TTS里会把“acc”念成“ack”,把“acct”念成“A-C-C-T”,念得像摩斯电码。 我自己?去年有阵子疯狂搞采集伪原创,把二十家技术博客的变量命名案例扒下来,拼成一篇《主流框架变量命名趋势报告》。交稿前最后一刻删了所有分析,只留原始片段——因为发现但凡我加一句“由此可见命名应倾向表意”,老周的语音引擎就读出错音。不是文本问题,是语义断层。我加的那句“应”,它识别成“ying”,然后整个段落就断了节奏。这个我说不准是不是所有TTS都这样,但至少JAWS+Chrome组合,确实如此。
文章配图,仅供参考 所以现在我改变量名,先过三道关:第一遍,自己闭眼听;第二遍,发给老周语音转文字;第三遍,让他用盲文显示器摸。上周改了个 configFlag,改了四次——config_switch、feature_flag、enable_feature、is_feature_enabled。最后一次他回我:“终于不用猜了。”下周约了老周录一期播客,主题是“不靠注释也能懂的命名”。设备已经借好了,麦是罗德NT1,但还没确定要不要加背景音——比如空调滴水声。你觉得呢?要不直接用那天会议室的实况? (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


