知乎上有个提问:为什么学编程都建议不要用拼音命名
不知道身为程序员的你,曾经有没有用拼音在程序代码中命名变量名、方法名、注释等的经历?
作为国内的程序员,可能有小伙伴会埋怨,编程语言和开发工具都已经全英文了,用拼音命名怎么了又,不好吗。
现如今汉语普及率这么高的今天,全世界都在学中国话,用拼音命名不是挺好。
在这里,我们不妨先思考一下,我们用拼音命名,在实际软件开发过程中,会有什么问题,缺陷在哪里?
带着疑问,我打开了chatgpt,想知道一下它是怎么看待这个问题?(面向gpt编程,程序员做事的正确姿势🤭)
以下是gpt给出的答复:
不得不感叹,gpt回答的确实比较专业,考虑问题也比较全面。
接下来,我们一一来拆解一下:
可读性差
如果一个项目,全程都只有你一个人编写与维护,这个问题的影响面可能相对还小一点(不要告诉我,时间一长,你自己都看不懂当时写的语意了,这就尴尬了😓)。
但,事实往往是,我们需要在一个大项目中,去编写部分业务模块代码。
有时候,我们为了赶时间或纯粹不想动脑筋,用拼音快速命名了一下临时变量或方法名。
比如下面这个例子:
var jianceniandu = ...
var nongtianchanliang = ...
var dikuaibianma = ...
var feiliaohanshuilv = ...
这种代码换做谁看得懂,特别是在没有注释的前提下。
难以表达意义
大家看下如下两段代码的对比,一个是用英文命名的方法名,一个是用拼音命名的方法名,大家感受一下,你更愿意看到的是哪个?
第一个方法,都不用我写注释,你一看就秒懂,这个方法表达的意图,做的事情。
但第二个,如果拼音简短一点的可能还好,但凡还要长的,你未必一时能看懂其含义,有时甚至要深入方法内部,查看完所有方法代码后,你才能反应过来,前人写的这个方法名表达的含义。(效率是真的低)
public void sendEmail(Message message){
//发送邮件相关代码
}
vs
public void faSongYouJian(Message message){
//发送邮件相关代码
}
IDE搜索困难
纠其原因,目前我们开发使用的IDE都是国外的软件,全文索引这块,对英文支持良好,但拼音支持不好,所以,有时候会影响搜索结果的。
跨语言兼容性差
如果我们的软件,打算开源,甚至未来有计划捐给一些国外基金会,比如Apache等,那么你写的代码,是面向全球化的,但问题来了,如果你写了拼音这种变量,老外是铁定看不懂的,这会显得这款软件很不国际化。
产生歧义
关于这一点,先贴几个案例,大家可以感受一下,先憋着别笑:
相关的案例不少,我就不穷举了。你用拼音命名我就先不说了,你还“简称”代替,你这不要人命嘛。