无障碍编程:变量命名如何无声包容视障开发者
|
去年二月份,选题会被毙了。就那条“无障碍编程:变量命名如何无声包容视障开发者”。总编用食指把打印稿往桌上一扣——不是推,是扣,纸边翘起来两毫米,像给尸体合眼。我原以为是立意太软,结果他指着第三段说:“‘无声包容’这个词太温吞,没攻击性。”我差点笑出声,但没笑,因为王璐在啃指甲,左手中指第二节已经发白,她刚被调去跟读屏测试组三天,回来眼皮都在抖。 外卖凉在工位隔板底下,铝箔盒盖子掀着,上面浮一层油膜,反射顶灯的光斑像一粒碎玻璃。没人动它。隔壁桌咖啡洒了,不是泼,是缓慢溢出,顺着键盘托架流进USB口,滋的一声轻响,然后死机。谁也没起身擦。这种事现在都懒得归因——硬件老化?插线板过载?还是单纯地,人早就不觉得该擦了。 我说变量命名这事根本不是“要不要做”,是“还能撑多久”。你让一个NVDA+Chrome+React的组合每天靠语音流听三十七个useXxx、handleXxx、onXxx,再加二十个refXxx——不是听一遍,是每改一行、每跳一次断点、每切一次分支都重新听。那个“Xxx”到底指什么?user?username?userInfo?userPreferences?语音引擎不拼写缩写,只报音节,“yoo-zer-pre-fuh-rens”……你猜他第几遍开始下意识跳过?我敢打包票:第三遍。这个我敢打包票。不是统计,是我自己关掉读屏、用键盘盲打调试时,手指悬停在Tab键上等那串语音念完的十八分钟里数出来的。 而总编说要“反常识”。行,我就反:优胜劣汰不是淘汰残障者,是淘汰那种“反正我能看清就默认别人都能”的命名惯性。比如那个叫isLoaded的state——加载完成?加载中?加载失败后重试状态?你鼠标hover一下看tooltip就知道,可语音不会hover。它就念“is loaded”,然后静默。静默比错误更糟。错误至少能触发纠错机制,静默直接进认知黑洞。还有handleClick、handleSubmit、handleKeyPress——仨函数全在一个useEffect里调,语音流连着播:“handle click handle submit handle key press”,中间没停顿,没上下文,像往耳道里倒三勺不同颜色的糖浆,混成一坨甜腻的糊状物。 小编小陈上周交了三百七十二稿,最后留下的命名是“tmpDataHolderForNow”。我问为什么不是tempData?他说读屏念“tem-puh-duh-tuh”,容易听成“temper duh tuh”,联想到温度调节。我说那dataForNow呢?他翻了个白眼,手机刚好响了一声,微信语音条弹出来,头像上那个小黄人表情在跳,他没点开,只是盯着看,直到动画停住。 这根本不是语义问题,是时间颗粒度问题。明眼人扫一眼变量名,0.3秒内建立语义锚点;视障者靠语音解析,得等整串词输出完、缓存、再解构——中间还可能被IDE补全打断、被通知栏打断、被同事喊一声打断。打断一次,上下文就得重载。重载三次,注意力就散了。这不是效率损失,是神经能耗超支。你代码跑得再快,开发者大脑带宽就那么宽。我们写的不是代码,是别人脑内的运行时环境。 上个月工资条下来,绩效栏写着“架构前瞻性”,旁边括号备注:“含无障碍适配进度”。我没吭声。KPI没写清是测读屏兼容率,还是改命名规范,还是推TTS自动化校验工具链。反正钱照发,活照压。张工昨天在 Slack 说他儿子学编程,九岁,先天视力障碍,现在用VoiceOver写Vue组件,“但他管v-model叫‘双向绑带’,说像安全带一样卡得死死的”。我回了个????,其实想说:你儿子比我们所有命名委员会都懂什么叫“无声包容”。
文章配图,仅供参考 我原以为推命名规范最难的是说服后端,结果发现最难的是说服自己——接受这件事根本不该需要说服。就像你不会在需求评审里论证“为什么按钮要有border-radius”。它就在那儿,像呼吸。可现在我们得为呼吸写RFC、做AB测试、排期、立项、对齐OKR……对了,上周例会李总问有没有量化指标,我说“听觉认知负荷降低率”,他愣了三秒,然后说:“这个不好进BI系统。”说完端起杯子喝了一口——水早就凉了,他没察觉。下次选题会我打算闭嘴。不递材料,不发言,就坐那儿,手机静音,盯着自己指甲缝里那点灰看。反正这篇可能活不过三小时。后台日志我已经删了两行,其中一行写着“2024-02-17 14:22:06.892 —— 检测到用户连续七次点击‘提交命名审查’后放弃”。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


