2018-07-19 在代码中进行中文命名(类/变量/方法等)的优势
最初的专栏文章对在代码中使用中文命名的质疑与回应是对一些常见质疑的批驳, 至今未见更有理的反面声音. 鉴于最近看到一些对中文命名进行负面暗示各种带节奏的网文(见最近一波对中文编程(包括中文命名)的攻势), 实在难以置之不理.
此文尝试小结一些比起英文命名更方便之处. 注意这是在明确的母语优势(对在代码中使用中文命名的质疑与回应"没有好处"一节)基础上额外的优势:
一. 不需要驼峰命名法或者下划线分隔
之前看到过有人问"中文命名怎么用驼峰命名法?". 答案是, 不用, 因为根本就不需要. 原因很简单, 中文语言本身就不用空格分隔. 带来的好处是, 中文命名和中文自然语言更加接近. 比较如下:
英文变量名: "weaponOfMonkeyKing" 或者 "weapon_of_monkey_king"
对应自然语言: "weapon of the Monkey King"
中文变量名: "孙悟空的武器" 对应自然语言完全相同
二. 单字变量视觉混淆更少
Python创始人亲自编写的Python命名规范PEP 8 -- Style Guide for Python Code就直接指出需要避免使用单字母的'l', 'O', 'I'(猜猜第一个还是第三个是大写i?)进行命名:
Never use the characters 'l' (lowercase letter el), 'O' (uppercase letter oh), or 'I' (uppercase letter eye) as single character variable names.
In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use 'l', use 'L' instead.
另外还有i, j在两层循环中容易混淆等等, 而中文单字(如'甲', '乙', '丙', '丁'等等)没有这样的问题
三. 中文单复数模糊性更符合语义
flaggedCells是个List, 它用复数命名的意思是”可能包含多个格”. 而实际上这个变量可能只包含一个格. 中文中的名词不分单复数, 正好符合”这个变量有可能含有单个或多个元素”这个语义. 因此命名为被标的格感觉可行. 假如语义需要强调有多个(不可能只有单个或没有), 可以考虑加上修饰如多个前缀等等.
四. 单字命名有更多选择, 也更可读
承蒙评论中指出, 单字命名在英文命名中确实常见. Is the use of one-letter variables encouraged?总结的比较全面, 还加了不少双字母的.
由于英文字母总共26个, 加上大写也很有限. 以至于有些字母有几种用法, 比如k: 1) 在循环中表示变量 2) 在表中表示键. 而单字中文的选择就多的多了. 比如(肯定有更合适的, 待集思广益): index-位/索/引, file-档, key-键(循环变量用'甲乙丙丁'之类, 就不会有上面的k的两种用法问题), value-值. 而这些中文单字比起对应的英文字母来, 明显更可读. 比较: i-位/索/引, f-档, k-键, v-值
欢迎补充.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2018-06-29 "西游记"主题Python入门示例尝试-数据结构
基于Python官方入门文档 5. Data Structures - More on Lists 列表详述 >>> 人物 = ['佛', '妖', '凡人', '菩萨', '妖', '凡人'] >>> 人物.count('妖') 2 >>> 人物.count('圣人') 0 >>> 人物.index('凡人') 2 >>> 人物.index('凡人', 4) # 从位置4开始搜索下一个凡人 5 >>> 人物.reverse() >>> 人物 ['凡人', '妖', '菩萨', '凡人', '妖', '佛'] >>> 人物.append('仙') >>> 人物 ['凡人', '妖', '菩萨', '凡人', '妖', '佛', '仙'] >>> 人物.sort() # 按照编码排序, 详见5.8 >>> 人物 ['仙', '佛', '凡人', '凡人', '妖', '妖', '菩萨'] &g...
- 下一篇
什么是大数据?零基础如何学习大数据?(附学习路线)
其实简单的来说,大数据就是通过分析和挖掘全量的非抽样的数据辅助决策。 大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测。比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同的。再比如精准营销、百度的推广、淘宝的喜欢推荐,或者你到了一个地方,自动给你推荐周边的消费设施等等。 随着大数据行业的快速发展,也随之出现了一些问题,比如大数据人才的缺失就是目前急需解决的一个问题,那么很多学大数据的人又出现了一些问题,就是大家普遍担心的就是零基础能不能学习大数据,会不会不好学? 零基础的人要不要去培训机构学习大数据开发吗?答案是可以的去。大数据学习并不是高深莫测的,虽然对于零基础学员来说不是那么简单,但是只要你认真学习,加上有专业老师的指导和针对性的训练,相信你也是可以完全掌握大数据的。 零基础的同学学习大数据开发不能急于求成,要分阶段分步骤来一步步完成,大概可以分为四步: 第一个阶段:了解大数据的基本概念 首先,学习一门课程的时候,要对这门课程有一个简单的了解,比如说,要先学习这门课程的一些专业的术语,学习一些入门概念知道这么课程是做什么的,主要的学习知识有哪些。那么学...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果