无障碍编程:变量命名如何无声包容视障开发者
|
去年春晚那会儿,我们团队在客户公司改无障碍适配——不是看春晚,是蹲在他们茶水间改 RN 的 accessibilityLabel。客户姓张,穿件皱巴巴的灰夹克,左手无名指有道旧烫伤疤,说话时总用圆珠笔戳平板背面,咔、咔、咔。他第十七次说“先做出来看看”,我盯着他平板壳上贴的褪色二维码,心想这玩意扫出来八成是某宝店铺首页。 会议室投影嗡嗡响了整下午,像台快报废的空调外机。桌上那盘车厘子没人动,但核堆得挺高——保洁阿姨清过两次,每次都在,真怪。张总转笔转得手指发红,边转边说:“淘宝那样的,不就点点划划?”我说“淘宝那样的”光 View 层组件就七百多个,他点头,掏出手机翻相册,给我看他媳妇刚拍的“别人家APP”,截图里赫然是拼多多首页,白底蓝字,按钮带阴影,右上角还有个闪动的小红点。我原以为他说的是交互逻辑,结果他指着那个小红点说:“这个,要保留。” 回一条微信:先打字“好的收到”,删掉;再打“稍等我拉个需求清单”,又删;最后只发了个“????”,发送。三秒后他回:“颜色改深点就行,明早上线。”——深点?深多少?Lottie 动画里的提示框、Toast 文字、甚至 loading 圆圈里那根旋转的灰色细线,全得测对比度。我让前端调色板,他助理把 Pantone 卡递过来,翻开第23页,指着一个编号说:“就是这个灰。”我看了一眼,是“烟熏云母灰”,Pantone 16-4007,WCAG AA 级对比度差 0.8。我说“这色号过不了无障碍检测”,他手一挥:“检测是你们的事,我们要上线。”
文章配图,仅供参考 上个月审计查盲文标签,发现三处命名硬编码:“btn_login”、“img_head”、“txt_tip”。没语义,没上下文,读屏软件念出来就是“button login”、“image head”、“text tip”。视障同事用 VoiceOver 摸着试了一遍,全程听不懂自己按的是什么。我把命名改成“login_button_with_fingerprint_option”、“user_avatar_image”、“error_message_explaining_missing_permission”,张总看着 PR 描述皱眉:“太长了,代码难读。”我说:“代码是给人写的,也是给机器听的。您手机里那个‘语音助手’,靠的就是这种长名字活着。”他哦了一声,低头继续转笔,咔、咔、咔。电梯里撞见他们CTO,戴耳机听《大悲咒》,音量大得走廊都震。我俩都没说话。他按了B2,我按了1,门关前他突然摘一只耳机:“你们那个accessibilityLabel,能不能……别写‘点击跳转’?我们法务说‘跳转’算诱导性话术。”我愣了半秒,按下关门键。其实我早该想到,他上次说“加个功能”,是要把开屏广告的关闭按钮做成不可聚焦态——理由是“防止误点”。 尾款没结。不是拖,是直接没提。源码他们要走了,顺手还拿走了我们内部封装的无障碍测试脚本,README 里写了“仅供学习”,他们工程师当场改了注释,塞进他们 GitLab 私有仓库,作者署名改成了自己。这事我没吱声,因为上一个更离谱的:某教育类客户,要求直播课按钮叫“开始上课”,但我们视障用户反馈说“上课”含糊(是点进教室?还是启动摄像头?),我们改叫“open_live_classroom_with_camera_and_mic_controls”,客户运营总监当场摔iPad:“这谁记得住!用户又不写代码!”后来他们找外包重做了整套 UI,按钮全叫“点这里”,配一个喇叭图标,读屏软件一读:“icon button”。完事。 张总昨天又打电话,说“排名包一下”。我没接。他声音挺平静:“不就是加个埋点嘛,你之前不是做过?”我听着电话那头隐约有小孩哭声,应该是他女儿。我原以为他至少知道“读屏软件不会读class名”,结果他在评审会上认真问:“那个‘txt_tip’改成‘error_message_explaining_missing_permission’,会影响APP体积吗?”我说不影响,他就放心了,还夸我们“考虑周到”。周到个屁。他连Xcode里VoiceOver调试开关在哪都不知道,但敢在合同里写“需符合工信部无障碍标准”。 优胜劣汰。不是指市场淘汰甲方,是指真正在用读屏软件的人,用两秒钟就决定卸载——你按钮叫“btn_submit”,人家摸到它,听见“button submit”,脑子要转三圈:提交啥?订单?表单?还是举报?而“submit_order_with_confirmation_modal”一出来,手指停都不停。这不是情怀,是路径损耗。就像你不会给数据库字段起名叫“a1”“b2”,因为查询会慢、会错、会崩。变量命名没语音通道,就等于断了视障开发者的调试神经。可笑的是,最坚持用短名的,反而是那些从没配过TalkBack的前端组长。 所以这次亏在哪?亏在答应了“先做出来看看”。做出来的是能跑的,但不是能听的。不是不能改,是改完他不认——他说“当时没说要读屏友好”,我说“无障碍适配是基础合规”,他答:“合同里写的是‘符合主流机型运行’。”对,三千块预算,主流机型,当然不包括视障人群用的机型。毕竟他们用的不是“主流”。 下回合同里这条必须写死:“所有用户交互控件的无障碍标识符,须以完整业务语义命名,禁止使用缩写、通用词或技术词替代可理解性描述;命名方案须经双方指定视障开发者口头验证通过。”至于验证人——我已经问好了,我表弟,视网膜色素变性,用VoiceOver写了三年RN插件,不收钱,只要一箱橙子。那盘没人动的车厘子,我走的时候顺手揣兜里了,酸得很。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


腾讯云推出助力视障开发者计划 用技术普惠视障人群