这两天公司准备用RPA技术(自动处理机器人)做几个小项目,”自动处理机器人”听起来是不是很高大上?其实懂的都懂,从本质上讲,就是用程序模拟人的行为。早在20多年,就有一款风靡整个游戏圈的软件,就是RPA的思路。按键精灵,游戏玩家应该都不陌生吧.
我让技术小伙这两天看看文档和示例DEMO,先搞个小玩意出来,评估下。我正闷头看资料呢(其实就是摸鱼),突然一声狂笑,吓了我一跳。
我骂道,“搞什么呢?吓我一跳。”
技术小伙:段哥,我给你看个爆笑的。
然后,把截图甩给我了。
我一看,就是一段RPA平台的示例代码,没什么啊。
他说,你往下看,那几个变量。。。
我一看,当时就笑喷了。。。
变量名是这样定义的:
当月收入= 4258.00;
年龄= 0;
满屏都是用中文进行变量定义。
小伙很无语,说道:段哥还能这样搞吗?
我说:别人怎么搞,我管不了,但你这样搞,我绝对把你打死。
他笑道“我是第一次见到用中文这么命名变量的,真把自己当成了吴军的易语言了”,说完又忍不住狂笑起来。
我觉得他误解我的意思了,我说你是不是觉得我特别反对中文变量?
他说是啊,你刚才不是说了嘛。
我说你错了,我不反对,但要看场景。
他吃惊道,命名个变量还要看场景?
我没说话,点了根小快乐,禁不住回想起二十多年前学编程时,所有的计算机书上都统一这样一段话:“变量只能以下划线、数字、字母命名,并且数字不能放在首位”。
所以这么多年,我从来也没想过用中文来命名变量,我的团队也都没有用中文命名过变量的。
这里必须要说一下unicode编码,这个编码规范诞生于1987,诞生的很早,但是成为事实标准,在国内完全普及,应该也就是零几年之后的事吧。
自从unicode字符集被全球所有厂商和各个语言的标准委员会逐步采纳后,事实上,我们的母语“汉字”是完全可以用来作为变量名使用的。
我想到前年春天半途接手的一个项目,都不能算半途,几乎都快开发完成了。
里面有很多“sb”作为前缀的变量,不仅变量,还有函数、数据库表里面的很多字段等等。
如果你每天对着一屏幕的的“sb”,估计你心情也不会好。
当时我知道这个“sb”肯定是一个很重要的缩写,我就问之前那个小伙,“sb”到底是什么?你怎么会起一个这样的前缀?
他说,“是社保的缩写啊”。。。”
社保的缩写。。。。我当时真想给他一脚!
你缩写成sb,还不如直接写成“社保”更容易理解些!
你猜他怎么说?
他说“shebao”太冗长了,至于“社保”,我压根不知道变量还能起中文!
我知道他其实就是为了图省事,他连“shebao”都不愿意多写,能愿意打汉字?说不知道unicode编码,不知道变量能起中文,打死我都不信。
如果小伙伴就这样干了,就问你服不服。。。
其实,中文变量的缺点我就不说了,我就说一个场景,如果在某种情况下,英文的名字实在不好表达,尝试中文变量也未尝不可。不过整个团队一定要做好约定,不能是个人行为,想怎么写就怎么写,否则像下面这样干,我就问你怕不怕,麻不麻。。。
你还别说,当然能正常编译,输出效果杠杠滴…
如果整个团队做好约定,我觉得特殊情况下,用中文可能是最好的解决方案.因为太多小微团队,整体英文水平有限,(这个是事实,你看网上好多做编程培训的,有几个单词念标准的?连最基本的value,都能念成“维留”,file能念成“非欧”,其实我也是个三脚猫,哈哈)
正好一个活生生的例子,下面这个变量,鬼知道你这是什么的缩写?
实际上这是一个特定的业务场景下的用语:政企简报-政企市场携转情况汇总日报1
这种情况在政府项目里,是最平常的情况,需要非常详细具体的描述,不然后期维护很麻烦,也不可能去写什么详细的文档,你见过哪个外包公司或者小微技术团队有很完善的项目开发文档?所以,在这种情况下,完全可以不用拼音嘛.英文是别想了,简单的单词完全没问题,具体的业务场景下的名字,用英文是自找苦头。
每次说道政府项目,我都会不由自主的想到一个段子我一个小伙伴以前入职过一家专门做政府项目的外包公司,第一天办理入职手续、搭好生产环境,第二天上午熟悉代码熟悉,下午就离职了,我问为什么?他说代码根本没法看,全是汉语拼音缩写,而且还没注释,最重要的是老人们只熟悉自己写的,别人写的也不清楚,问老大,老大说“你先猜猜看,判断判断”。。。
我当时笑的肚子疼,但是这是没办法的事,政府项目中,大多数都是专有名词,没办法翻译成简单易懂的英文,如果强行翻译成英文,第一大多人是根本不认识这些专有名词的,再有就是翻译完之后对应的英文真的很长很长,如果你这样干了,我不知道别的项目老大怎么做,反正我会让你滚蛋的。。。最起码我看不懂。所以就清一色拼音首字母了。不然拼音和英文混用会更让人崩溃。特别是在政府项目的接口、数据库设计里,好多是拼音做前缀,然后下户线跟英文的,我是看一次,掉一次头发。。。。。。
下面这个一点都不夸张,
我就问你与其这么受罪,不如直接用中文得了,是不是?
int deit; //deit -> date
int riqi; //riqi ->日期
你要真不愿意或者不知道日期的英文单词,我觉得你用”日期”做变量名,都比”riqi”要更可读点!
这都不算什么,我还见过更牛×的团队,为了”代码风格统一”,统一约定所有变量都用拼音命名,(不是个例,只要你在小团队呆过),然后就出现了:
lv = 0x33FF33;
在我头发快秃之前,终于猜出来了这个变量表示的是”绿”!老哥你如果实在不愿意”green”,就直接定义个”绿”做变量,不也挺得劲的吗?
你能猜出来这些属性是什么含义吗?我相信你猜不出,我也猜不出,
后来她们项目的老大实在忍受不了了,表示快疯了,允许她以后使用汉字命名变量。然后,该程序媛的代码就变成了这样:
我说,既然用汉字命名变量了,还留一个类名干什么呢?不如连类名都直接用”订单”来表示一了百了了…
最后说一个更绝的事,我都搞不清楚这老几到底是不是故意试验一把“防御式编程”的感觉,以前“防御式编程”是指程序员在写一个功能时,把所有的可能都设想到,并做了应对,这是一种编程策略,但是最近,“防御式编程”变成了一种调侃,是指故意把代码写得让别人看不懂,没法维护,这样公司就不敢轻易裁掉我(当然不是真的,只是一种调侃)
就说这个老几写了一个方法,方法名是haisong(),你仔细琢磨琢磨,让你天马行空的猜这个大概是干啥的……
他的解释是,hair是不是中文”发”?song就是”送”,组合在一起就是”发送”的意思…..你不要笑,你也不要觉得我是在编,他就是没用send_XXXXX之类规范,就问你牛叉不牛叉?
其实,我的个人态度是最好有英文规范命名,如果特殊情况,特别是政府项目,其实统一采用中文命名是最好的一种解决方法,远远比拼音大法、拼音和英文混合大法、拼音缩写大法更适合。不然整个团队都痛苦。
变量命名是编程中时时刻刻都要面对的,对开发团队而言,最好要有一套合理的命名规范。我不但不否定中文命名,在某种情况下,甚至觉得中文是最合适的命名规范,特别是在对接政府项目时,复杂的各种专有名词更适合用中文命名。
所以说,中文命名不奇葩,变量命名也不要陷入思维定式。一家之言,欢迎讨论。
段誉,2024年1月24日,写于合肥。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.