为什么学编程都建议不要用拼音命名?

为什么,编程,建议,不要,拼音,命名 · 浏览次数 : 771

小编点评

在实际软件开发过程中,用拼音命名变量名、方法名、注释等可能会存在以下问题和缺陷: 1. **可读性差:** 当一个项目,全程都只有你一个人编写与维护时,使用拼音命名变量名、方法名、注释等可能会降低代码可读性,增加理解难度。 2. **效率低:** 用拼音命名变量名、方法名、注释等会降低代码效率,因为需要使用更长的字符串来表达含义。 3. **跨语言兼容性差:** 如果我们的软件,打算开源,甚至未来有计划捐给一些国外基金会,比如Apache等,那么用拼音命名变量名,老外是铁定看不懂的,这会显得这款软件很不国际化,可能导致无法被国外开发者理解。 4. **歧义产生:** 当我们用拼音命名变量名、方法名、注释等时,可能会导致歧义,因为老外是铁定看不懂的。 5. **命名冲突:** 如果多个变量或方法名相同使用拼音字母,可能会导致命名冲突,影响代码的可读性和可维护性。 6. **代码可读性问题:** 在一些情况下,为了赶时间或纯粹不想动脑筋,我们可能会使用拼音快速命名了一下临时变量或方法名。这可能会导致代码难以理解,降低代码可读性。

正文

前言

知乎上有个提问:为什么学编程都建议不要用拼音命名?

↓↓↓

 

 

 

 

不知道身为程序员的你,曾经有没有用拼音在程序代码中命名变量名、方法名、注释等的经历?

动图封面

作为国内的程序员,可能有小伙伴会埋怨,编程语言和开发工具都已经全英文了,用拼音命名怎么了又,不好吗。

现如今汉语普及率这么高的今天,全世界都在学中国话,用拼音命名不是挺好。

 

在这里,我们不妨先思考一下,我们用拼音命名,在实际软件开发过程中,会有什么问题,缺陷在哪里?

ChatGpt回复

带着疑问,我打开了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等,那么你写的代码,是面向全球化的,但问题来了,如果你写了拼音这种变量,老外是铁定看不懂的,这会显得这款软件很不国际化。

产生歧义

关于这一点,先贴几个案例,大家可以感受一下,先憋着别笑:

 

相关的案例不少,我就不穷举了。你用拼音命名我就先不说了,你还“简称”代替,你这不要人命嘛。

动图封面

本文完~

原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处。

 

与为什么学编程都建议不要用拼音命名?相似的内容:

为什么学编程都建议不要用拼音命名?

知乎上有个提问:为什么学编程都建议不要用拼音命名?元芳,你怎么看?

探究:普通人都是怎么入门编程

前景提要 很多人想要入门编程语言,但是,费了九牛二虎之力为什么还是学不会,最终导致从入门到放弃,不过是一瞬间,其实,入门的关键是选择对了核心要学习的知识,而不是盲目的那本书,然后,开始看天书一样的费劲破解这本书,书上的内容就像谜语一样,而你掌握的线索不足以让你识别书上的谜语,这样的结果就是你永远无法

函数式编程(Lambda、Stream流、Optional等)

# 声明 文档来源:Github@shuhongfan 源文档:B站UP主:三更草堂 # 函数式编程-Stream流 # 概述 # 为什么学? 基操,否则看不懂别人写的优雅代码 简化代码,不想看到有些恶心代码 大数据下处理集合效率高 // 【恶心级代码】查询未成年作家的评分在70以上的书籍 由于洋流

17岁中专女生勇夺2024阿里全球数学赛12名好成绩,今天,站在程序员的视角,我们来聊聊数学对编程的价值与意义...

大家好,我是程序员陶朱公,一个认真生活,总想超越自己的程序员。 前言 相信这两天,大家都刷屏到了一个比较热度的新闻——17岁中专女生在今年这届阿里举办的全球数赛中,勇夺第12名的好成绩。 ↓↓↓ 看到这里,可能有小伙伴会觉得有点疑惑:又不是第一名,不明白第12名的她,为什么会引起社会这么大的一个反响

『手撕Vue-CLI』编码规范检查

前言 这篇为什么是编码规范检查呢?因为这是一个很重要的环节,一个好的编码规范可以让代码更加清晰易读,在官方的 VUE-CLI 也是有着很好的编码规范的,所以我也要加入这个环节。 其实不管在哪个项目中,编码规范都是很重要的,像我们平日里的项目开发当中,我们也会使用 ESLint 来进行代码规范检查。

[转帖]Linux fuse用户态文件系统及其libfuse

https://www.jianshu.com/p/abc5524ac18c 为什么要有用户态文件系统 VFS文件系统可知文件系统在内核态的,应用程序操作文件,统一调用内核态的VFS层抽象接口。 突然有一天有一个和文件系统有关的需求,要编写一个特定功能的文件系统,不管是代码编写还是调试都不太方便,就

为什么计算机中的负数要用补码表示?

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 在前面的文章里,我们聊到了计算机的冯·诺依曼架构的 3 个基本原则。其中第 1 个原则是计算机中所有信息都是采用二进制格式的编码。也就是说,在计算机中程序的数据和指令,以及用户输入的

如何用 JavaScript 编写你的第一个单元测试

前言 测试代码是使代码安全的第一步。做到这一点的最好方法之一是使用单元测试,确保应用程序中的每个小功能都能发挥其应有的作用--特别是当应用程序处于边缘情况,比如无效的输入,或有潜在危害的输入。 为什么要单元测试 说到单元测试,有许多不同的方法。单元测试的一些主要目的是: 验证功能:单元测试确保代码做

一次JSF上线问题引发的MsgPack深入理解,保证对你有收获

某一日晚上上线,测试同学在回归项目黄金流程时,有一个工单项目接口报JSF序列化错误,马上升级对应的client包版本,编译部署后错误消失。 线上问题是解决了,但是作为程序员要了解问题发生的原因和本质。但这都是为什么呢?

通过redis学网络(2)-redis网络模型

> 本系列主要是为了对redis的网络模型和集群原理进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。 系列源码已经上传github ```go https://github.com/HobbyBear/tinyredis/tree/chapter2 ```