无障碍编程:变量命名里的视障友好之道
|
2025年十月那会儿,群里突然有人甩了篇《变量命名里的视障友好之道》,我原以为又是那种“代码要写注释”的废话文学,结果点开一看——好家伙,这作者居然在讲变量名该用“高对比度命名法”,比如用“is_active”代替“active”,用“has_error”代替“error_flag”,说是能帮视障开发者通过屏幕阅读器更快理解代码逻辑。当时我第一反应是:这特么不是运维该操心的事儿吗?结果第二天,客户那边一个视障程序员直接发邮件骂我:“你们后端API的变量名全是缩写,我屏幕阅读器念出来全是乱码,调试效率掉了三成!”
文章配图,仅供参考 群里老张立刻跳出来附和:“我上周也遇到这事儿!有个视障实习生把‘user_status’写成‘ust’,屏幕阅读器直接念成‘you-ess-tee’,他愣是听了十分钟才反应过来。”老王在旁边补刀:“你们这算好的,我司之前有个变量叫‘cnt’,视障同事以为是‘count’的缩写,结果发现是‘current_node_type’的截断版,当场摔键盘。”我盯着屏幕上的聊天记录,突然想起上周运维监控台掉的那些索引——当时以为是算法调整,现在想想,会不会是变量名太乱导致屏幕阅读器抓取失败?但说实话,我最开始觉得这纯属矫情。代码是给人看的,又不是给机器读的,变量名起得再“友好”,能比注释有用?直到那天中午,我蹲在机房修服务器,顺手翻了下那篇“视障友好命名法”的文档,发现里面居然列了具体案例:比如用“is_loading”代替“loading”,因为屏幕阅读器会明确读出“is”这个状态词;用“has_permission”代替“perm_flag”,因为“has”能直接传达“是否存在”的语义。我越看越不对劲——这特么不就是我们运维常说的“命名要自解释”吗?只不过以前只考虑普通开发者,现在要加上视障群体的需求。 下午开例会,我把这事儿提了一嘴,结果产品经理直接拍桌子:“视障用户才占多少?我们核心KPI是功能迭代速度,哪有时间搞这种花里胡哨的?”我张了张嘴,突然想起上周那个视障程序员的邮件——他调试效率掉三成,意味着我们整个后端团队的交付周期可能也要跟着掉。可产品经理说得也没错,资源就那么多,优先级怎么排?群里老李突然发了张图:他司去年因为变量名混乱,导致视障实习生离职率涨了四成,最后被残联约谈,赔了二十多万。我盯着那张图看了半天,桌上的外卖凉了都没察觉。 其实我最烦的是,这事儿没有标准答案。比如“user_count”和“cnt_user”,哪个更视障友好?前者长但自解释,后者短但依赖缩写。群里有人贴了篇论文,说屏幕阅读器对“is_”前缀的识别率比“flag_”高七成,但马上有人反驳:“那‘is_user_active’和‘user_active_flag’呢?前者读出来是‘is user active’,后者是‘user active flag’,哪个更清晰?”我原以为这问题有明确结论,结果查了半天资料,发现连W3C的标准都写得模棱两可——他们只说“变量名应避免歧义”,但没定义“歧义”的具体范围。 更搞笑的是,我们运维团队自己都矛盾。上周我让新人把“err_code”改成“error_code”,结果老同事跳出来骂:“你懂不懂代码规范?缩写能省多少字符!”可现在想想,如果视障开发者用屏幕阅读器,缩写确实可能被误读。比如“err”可能被念成“air”或“ear”,而“error”则明确无误。那天晚上我躺在床上刷手机,发现浏览器开了三十多个标签,全是关于“无障碍编程”的讨论——有人说该用“camelCase”,有人说该用“snake_case”,还有人坚持“全大写加下划线”。我越看越懵,最后把手机一扔:这特么比服务器集群调度还复杂。 第二天,我偷偷把后端API的变量名改了几个测试版。比如把“user_status”改成“is_user_active”,把“perm_flag”改成“has_permission”,然后让那个视障程序员试了试。他反馈说:“屏幕阅读器读‘is_user_active’时,我能直接听出‘用户是否活跃’的逻辑,比之前快了一倍。”但普通开发者却抱怨:“变量名变长了,写代码时手酸。”我盯着监控台的数据,发现改了命名法的接口,错误率掉了两成,但响应时间涨了百分之五——这算不算优胜劣汰? 其实我最在意的是,这事儿会不会影响收录。我们运维最看重的就是索引量,如果变量名太“友好”导致代码可读性下降,会不会被搜索引擎降权?但查了半天,发现搜索引擎根本不抓取代码里的变量名——它们只关心页面内容和链接结构。我松了口气,可马上又纠结:那视障友好命名法到底图什么?为了那不到百分之一的视障开发者?还是为了所谓的“社会责任感”?群里老赵突然说了句大实话:“别想那么多,你就当是优化代码可维护性——视障友好命名法,本质上是让代码更‘人类友好’。” 现在我还在试。比如把核心业务逻辑的变量名全改成“is_xxx”或“has_xxx”,辅助功能的变量名保持缩写。视障程序员说调试效率又涨了,普通开发者也慢慢习惯了——毕竟谁也不想被残联约谈。但我还是看不准:这到底是昙花一现的“政治正确”,还是真的能成为行业规范?下周我打算找几个视障开发者做个深度访谈,顺便把运维监控台的日志也分析一遍——如果变量名优化后,错误日志的关键词分布变了,那可能真有点门道。至于结果?管他呢,先试了再说。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


