无障碍编程:变量命名如何无声包容视障开发者
|
走廊尽头那台监护仪一直在响,我原以为又是哪个床位的报警阈值没调好,结果老张从值班室探出头说“别管,三床的,家属不让关”。打印机这会儿又卡纸了,白大褂口袋里半块饼干被我捏得碎成渣——这事得从去年11月说起,当时我们组接了个无障碍编程的试点项目,要求所有变量命名必须符合WCAG标准,说是要“无声包容视障开发者”。我第一反应是扯淡,变量名不就是个符号?结果被测试组的小王怼得没话说——他戴着盲文显示器,指着代码里的“btnSubmit”说:“这缩写我摸半天才猜出来是提交按钮,要是写成‘buttonSubmit’,我扫一遍就知道。” 那天我们吵了半小时,他举的例子更绝:有个变量叫“userInfoList”,他说“Info”和“List”连一起,用屏幕阅读器读出来是“用户信息列表”,但如果是“userInformationArray”,“Array”这个词在盲文里要摸三遍才能确认,效率差了至少30%。我当时心里犯嘀咕:这不就是优胜劣汰?变量名起得清楚,盲人开发者用着顺,起得模糊,人家自然不用你的代码。但嘴上还是硬:“那英文缩写总要用吧?比如‘DB’代表数据库,这总没问题吧?”小王冷笑:“问题大了,‘DB’读出来是‘D-B’,我得想这是‘数据库’还是‘双倍’还是‘调试’?换成‘database’,屏幕阅读器直接读‘database’,一秒懂。” 护士站有人在剥橘子,酸味飘过来,我咽了咽口水。老张从值班室出来,手里攥着半支烟:“你们聊什么呢?我刚才听小王说‘变量名要全拼’,这不是折腾人吗?”我摇头:“开始我也这么想,但后来发现,这其实是在筛选代码质量。”老张眯眼:“怎么说?”我指了指屏幕:“比如‘getUserData’和‘fetchUserInfo’,前者更符合视障开发者的习惯,因为‘get’和‘fetch’在屏幕阅读器里发音区别小,但‘data’比‘info’更明确。而且,全拼的变量名强制开发者把逻辑写清楚——你要是偷懒用缩写,代码自己都读不顺,更别说别人了。” 打印机终于把纸吐出来了,我抽了一张擦手,发现白大褂袖口沾了饼干渣。小王当时还提了个细节:变量名里的下划线“_”和驼峰命名“camelCase”对盲人开发者的影响。他说下划线在盲文里是“短横线”,摸起来容易和空格混淆,而驼峰命名因为大小写变化,屏幕阅读器会明确读出“大写字母”,比如“userName”读作“user Name”,视障开发者一听就知道是两个单词。我原以为这是吹毛求疵,结果测试时发现,用下划线的代码,视障开发者的错误率比驼峰命名高了近一倍——这不就是优胜劣汰?市场自己会选,谁更包容,谁就能活下去。 走廊那盏灯闪了一下,我抬头看了眼,没在意。老张突然问:“那你们现在所有变量名都改全拼了?”我摇头:“没,刚开始也抗拒。比如‘i’当循环变量,‘e’当异常,这些习惯用了十几年,改起来难受。但后来发现,视障开发者根本不碰这些代码——他们说‘i’和‘e’在屏幕阅读器里读出来是‘eye’和‘ee’,完全不知道啥意思。”我顿了顿,“所以现在我们的规范是:循环变量必须用‘index’或‘counter’,异常变量必须用‘error’或‘exception’。虽然写起来长点,但至少所有人都能懂。” 家属在门口来回踱步,脚步声闷闷的。我想起上周测试时,小王摸着代码突然笑出声:“这变量名谁起的?‘tempVar’?太敷衍了吧!”我问他怎么了,他说:“‘temp’在盲文里是‘临时’,‘Var’是‘变量’,但屏幕阅读器读出来是‘temp var’,听起来像‘temp var’——这和‘temporary variable’差远了,我根本不知道这是干啥的。”我后来查了规范,发现WCAG明确要求变量名必须“语义明确”,不能依赖缩写或模糊词汇。现在我们的代码里,连“tmp”这种缩写都不让用,必须写“temporary”或“tempValue”。老张听完啧了一声:“这不就是把懒人逼着变专业?”我点头:“对,优胜劣汰——谁愿意花时间把变量名写清楚,谁的代码就能被更多人用。”
文章配图,仅供参考 这个我不讲了,反正后来我们组的代码通过率提高了40%,视障开发者的反馈也从“勉强能用”变成“很顺手”。上周小王还发消息说,他现在写代码时,会下意识避开缩写,因为“习惯了全拼,缩写反而觉得别扭”。我原以为这是矫情,结果发现,当变量名变得清晰,整个代码的逻辑都跟着顺了——这大概就是优胜劣汰的魅力:不是谁喊得响,而是谁更包容,谁就能活到最后。(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



