12年老手揭秘:变量命名,别让驼峰成视障者的坎
|
去年国庆节第三天,我在公司的测试工位上,跟刚毕业的小周吵了十分钟。不是项目上线的事,是变量名。 当时要拉用户留存的周度数据,小周写的脚本里有个变量叫“activeUserCountThisWeek”——就因为这串驼峰,测试岗的老吴盯着屏幕眯了十五分钟,说他这几天刚好眼疲劳,连带着视障部的小张也来吐槽,说读这串变量要停三回,比找他负责的模块bug还费眼。 我原以为,驼峰命名是程序员圈默认的“行业规则”,连我刚入行那会,师父都夸会用驼峰是“进阶标志”。结果那回我才看见,小周敲完那行代码时,手指都没在大键盘区停,连Shift键都没碰——他是凭着记忆顺下来的,根本没考虑到别的岗的人用的时候,眼睛要遭什么罪。 老吴后来跟我念叨,他那阵子赶项目熬了半个月,干眼症犯得厉害,看长串字符就像看一团拧乱的麻绳,得用鼠标拖来拖去,慢慢找大小写的分界,就为了确认这个变量是统计周活跃数的,不是日的。小张更绝,他说上次因为看错驼峰,把“lastLoginTime”和“lastloginTime”搞混了,差点把视障模块的用户登录日志全导错,后来还是我连夜改的脚本,才没出大问题。 哪年?差不多十年前了,我刚入行那会,组长给我们培训,就说驼峰是“行业标配”,没人会在意视障者的感受。那时候我还觉得,全小写加下划线太丑,蛇形命名是“新手才用的土方法”——现在再看,那会的想法才是真的蠢。
文章配图,仅供参考 其实我也不是完全排斥驼峰,只是没意识到,这东西根本不是“优胜劣汰”出来的好东西,它只是程序员自己用着爽,把视线外的人全丢了。视障部的小张后来跟我聊,说他们测数据的时候,要靠屏幕阅读器读变量名,驼峰的每个大写字母都要单独读出来,比如“activeUserCountThisWeek”,要读成“a c t i v e 大 u s e r 大 c o u n t 大 t h i s 大 w e e k”,每个大写字母都断一下,听起来就像机关枪,稍微分心就听混了。后来我翻了之前的项目,我们的旧报表里,有一串变量叫“dailyActiveUserLastWeek”,上次导数据的时候,小张读成了“大 d a i l y 大 a c t i v e 大 u s e r 大 l a s t 大 w e e k”,把“weeklyActiveUserLastWeek”当成了结果,差点给运营部的周报发错数。那回老吴查了三天,才找到是变量命名的问题,不然这事要捅到客户那。 上个月我整理之前的旧项目代码,翻到一个三年前的统计模块,里面全是驼峰变量,连我自己都差点看错——“totalOrderAmountOfLastMonth”,我当时写的是“totalOrderAmountOfLastmonth”,把“Last”的L大写了,结果屏幕阅读器读成了“last m o n t h”,成了“上个月的总订单金额”,其实我要的是“上个月的最后一个月的总订单金额”,差点把财务的账算错。 小周那回被说的脸都红了,他说他刚毕业,只知道驼峰是行业规则,没人教过他要照顾别的岗的人。我后来跟他说,我刚入行那会也这么想,直到出了事才明白,编程不是写自己能看懂的东西,是写让所有人都能看懂的东西。后来我跟组长提了,说以后变量命名,优先用蛇形,尽量少用驼峰,实在要用,就得注意大小写的分界,别让视障者和眼疲劳的人费眼。 哦对了,上次跟小张一起吃午饭,他说现在他们视障部的同事,测数据的时候,要是看见驼峰变量,就记个小本子,等代码改了再删——那本子现在有十几页了,全是驼峰命名的坑。我后来跟老吴说,以后他测数据的时候,要是看见驼峰变量,就找我,我帮忙把驼峰改成蛇形,省得他眯着眼睛找分界。 其实我也试过,把自己写的代码里的驼峰全改成蛇形,结果发现,自己看着也舒服,不用费眼睛找大小写,别人用的时候也方便。现在我写变量,能不用驼峰就不用,非得用的话,就把分界做的明显点,比如“active_user_count_this_week”,或者“active_user_count_this_week”——不对,刚才那俩其实都是蛇形,我好像没改对,应该是“active_user_count_last_week”才对。 哦,对了,我后来才知道,其实很多公司的编程规范里,早就说变量命名要考虑可访问性,只是我们这些老程序员,一直抱着旧规矩不放,觉得驼峰才是“专业”,结果把最该照顾的人给忘了。这次跟小周吵完,我才明白,所谓的“优胜劣汰”,不是谁用了什么规则,是谁能真正为用代码的人着想,而不是只想着自己敲代码的时候快一点。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


变量命名别玩梗,18年老码农的Accessibility忠告
9年经验:变量命名别用color,用bg_hue更包容
Yii2使用驼峰命名的形式访问控制器的示例代码
用“AI”抗疫,腾讯云OCR助力视障者开启光明人生
