文章目录

  • 1.camel case (驼峰式)
  • 2.snake case (蛇形式)
  • 3.kebab case (烤串式)
  • 4.匈牙利命名法
  • 5.小结
  • 参考文献

编码时,命名无处不在。

比如我们需要对文件命令,对目录命名,对变量命名,还有其他类型的资源等等。那么取名时,业界有哪些命名方式呢?

本文将列举常见的命名方式,不讨论孰优孰劣,每种都有其各自的使用场景。

1.camel case (驼峰式)

特点: 名称中间没有空格和标点,除第一个单词外后面的单词首字母均大写。

如果第一个单词首字母小写,称之为小驼峰式(lower camel case),例如 “getUserName”。

如果第一个单词首字母大写,称之为大驼峰式(upper camel case),例如 “GetUserName”。

注意: 大驼峰式还有一个称呼叫帕斯卡式(pascal case)。

驼峰式是一种非常流行的将单词组合成单个概念的方式。在许多语言中,小驼峰常被用来命名局部变量和函数,大驼峰常用来命名全局变量和类。

2.snake case (蛇形式)

特点: 名称的不同单词由下划线分隔。

如果所有单词都小写,称之为小蛇式(snake case),例如 “get_user_name”。

如果所有单词都大写,称之为大蛇式(screaming snake case),例如 “GET_USER_NAME”。

之所以加个 screaming,因为在英文中,如果一个单词全部大写,表示大声喊叫。

小蛇式通常用于声明数据库字段名,大蛇式通常被许多语言用来命名常量。

3.kebab case (烤串式)

特点: 名称中间的标点被替换成连字符(-),所有单词都小写,例如 “get-user-name”。

如果所有单词都小写,称之为小烤串式(kebab case),例如 “get-user-name”。

如果所有单词都大写,称之为大烤串式(screaming kebab case),例如 “GET-USER-NAME”。

URL 中经常使用小烤串式。例如 www.blog.com/cool-article-1。这是一种很好的、干净的、可读的单词组合方式。

大烤串式的命名主要用于突出强调被命名的对象,古老的 Cobol 编程语言中经常使用,所以有时也被称为 cobol case。

4.匈牙利命名法

匈牙利命名法是早期的规范,由前微软程序员查尔斯-西蒙尼(Charles Simonyi),因其为匈牙利人,故被称为匈牙利命名法。

匈牙利命名法是 IDE 还十分智障的年代的产物。那个年代,当代码量很多的时候,想要确定一个变量的类型是很麻烦的,不像现在 IDE 都会给提示,所以才产生了这样一个命名规范,估计现在已经没啥人用了吧。一个十分复杂却又琐碎的命名规范。

该命名规范,要求前缀字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,单词第一个字母大写。

int iMyAge;        #  "i": int
char cMyName[10];  #  "c": char
float fManHeight;  #  "f": float

其他前缀类型还有:

a      数组(Array)
b      布尔值(Boolean)
by     字节(Byte)
c      有符号字符(Char)
cb     无符号字符(Char Byte,并没有神马人用的)
cr     颜色参考值(Color Ref)
cx,cy  坐标差(长度 Short Int)
dw     双字(Double Word)
fn     函数(Function)
h      Handle(句柄)
i      整形(Int)
l      长整型(Long Int)
lp     长指针(Long Pointer)
m_     类成员(Class Member)
n      短整型(Short Int)
np     近程指针(Near Pointer)
p      指针(Pointer)
s      字符串(String)
sz     以 Null 做结尾的字符串型(String with Zero End)
w      字(Word)

还有其他更多的前缀是根据微软自己的 MFC/句柄/控件/结构等东西定义的,就不过多描述了。

5.小结

没有最好的命名方式,就像没有最好的编程语言一样。

如果一个团队在命名名方式保持一致,那么选择使用哪个命名方式并非那么重要,当然也要和业界的惯例达成一致。


参考文献

Camel case - Wikipedia
Snake case - Wikipedia
Hungarian notation - Wikipedia
Naming convention (programming) - Wikipedia
Case Styles: Camel, Pascal, Snake, and Kebab Case
COBOL - Wikipedia

程序员必知的 4 种命名方式相关推荐

  1. 程序员必知的几种软件架构模式

    程序员必知的几种软件架构模式 前序 分层架构模式 多层模式 管道 - 过滤器架构 客户端 - 服务器架构 模型 - 视图 - 控制器架构(MVC) 事件驱动架构 微服务架构 前序 架构模式是对给定上下 ...

  2. 程序员必知的7种软件架构模式

    作者:Trung Anh Dang 策划:万佳 架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案. 一种模式就是特定上下文的问题的一种解决方案. 然而,很多开发者至今还对各种软件 ...

  3. java 字符串转骆驼命名_程序员必知的Java基础:5条命名规范和8种数据类型归纳...

    原标题:程序员必知的Java基础:5条命名规范和8种数据类型归纳 一.Java命名规范 任何一种语言都有一套针对于语言自身的命名的规范,java也不例外.接下来,我就列举一下java对命名的规范. 下 ...

  4. 英:程序员必知单词、语句、英文缩写汇总

    转自: 程序员必知单词.语句.英文缩写汇总 程序员必知单词.语句.英文缩写汇总 2018年11月06日 14:02:52 牟垚 阅读数:180 综述:便于类,函数命名,工作文档阅读而做的单词积累,还是 ...

  5. 程序员必知8大排序3大查找(三)

    前两篇 <程序员必知8大排序3大查找(一)> <程序员必知8大排序3大查找(二)> 三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表(以后谈) 一.顺序查找的基 ...

  6. 程序员必知必会之maillist篇

    程序员必知必会之maillist篇        本文最初由恋花蝶发表于http://blog.csdn.net/lanphaday,可以随意转载,但未经同意不得增删修改,转载应保留本声明,否则追究责 ...

  7. 程序员必知必会之blog篇

    程序员必知必会之blog篇 网易广州       赖勇浩(http://blog.csdn.net/lanphaday) 本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanp ...

  8. 专业程序员必知必会技巧:驯服复杂代码

    感悟:虽然不想做一个程序员,但还是自做这些事情!艺术家首先是工匠!多美妙的哲理,可是路途漫长而很多人选择了放弃,我也想放弃了.更重要的是,如果希望是一个艺术家,首先是一个NB的工程师. 原文链接:ht ...

  9. 专业程序员必知必会的技巧:驯服复杂代码

    你从入职第一天起就要应对复杂代码. 若是还未遇到过无法理解的程序,那说明你编程的年头还不够长.在行业里,要不了多久你就会碰到让人发懵的混乱代码:巨兽.面条工厂.来自地狱的遗留系统.我曾接手过一个程序, ...

最新文章

  1. Elasticsearch环境搭建
  2. WPF 制作圆角按钮
  3. numpy版本不对应导致tensorflow出错
  4. STL-bitset源码解析
  5. roku能不能安装软件_如何在Roku中使用Google Assistant
  6. Java之jdk和CGLib实现动态代理
  7. 数据结构练习——双向链表
  8. 关于使用pdf.js预览pdf的一些问题
  9. Redis 持久化——混合持久化
  10. matlab mysvd代码解释,关于使用SVD进行PCA主成分提取的代码问题!也是必须涉及到原理的!...
  11. 在etherscan上传合约源码
  12. 实战python网络爬虫黄永祥_《实战Python网络爬虫》- 感想
  13. 获取pc微信信息_如何获取有关您的PC的详细信息
  14. 程序员在赚钱游戏上的优势 | 赚钱游戏
  15. vue组件通讯:父传子、子传父、事件发射详解
  16. 修改火狐浏览器滚动条样式
  17. 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)...
  18. Microsoft Visual Studio 2003 2005 2008 2010 2012 下载
  19. android文件打印--printerShare
  20. 基于SpringBoot前后端分离的众筹系统(附源码)

热门文章

  1. (扩展)BSGS与高次同余方程
  2. unity photon中技能效果网络同步
  3. android 基础知识-LOG和版本解释
  4. php自定义文件后缀名,显示文件扩展名 显示文件后缀名设置篇-DIV CSS网页开发准备...
  5. CMD命令全集(转)
  6. python if main_python if __name__ == 'main' 的作用和原理()
  7. 轻量级模型设计与部署总结
  8. Selenium登录百度贴吧跳过图片验证的两种操作
  9. 英语学习——学英语的心态(2)
  10. ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)的解决方法。