编码命名方式知多少(代码片段)

爱码大鲤鱼 爱码大鲤鱼     2022-12-14     724

关键词:

文章目录


编码时,命名无处不在。

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

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

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

io模型知多少|代码篇(代码片段)

...“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以 查看详情

consurrentdictionary并发字典知多少?(代码片段)

...ry是Dictionary的线程安全版本,位于System.Collections.Concurrent的命名空间下,该命名空间下除了有ConcurrentDictionary,还有以下Class都是我们常用的那些类库的线程安全版本.BlockingCollection:为实现IP 查看详情

unitofwork知多少(代码片段)

原文链接:https://www.cnblogs.com/sheng-jie/p/7416302.html1.引言Maintainsalistofobjectsaffectedbyabusinesstransactionandcoordinatesthewritingoutofchangesandtheresolutionofconcurrencyproblems.UnitofWork  查看详情

前端编码规范(代码片段)

最佳原则坚持制定好的代码规范。无论团队人数多少,代码应该同出一门。命名规则项目命名全部采用小写方式,以下划线分隔。例:my_project_name目录命名参照项目命名规则;有复数结构时,要采用复数命名法。例:scripts,styles,... 查看详情

玩转springboot原理篇(核心注解知多少)(代码片段)

type=FilterType.CUSTOM,classes=TypeExcludeFilter.classtype=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.classSpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguratio 查看详情

__attribute__你知多少(代码片段)

__ATTRIBUTE__你知多少?GNUC 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(FunctionAttribute )、变量属性(VariableAttribute )和类型属性(TypeAttribute )。__attribute__ 书写特征是:__attribu 查看详情

智能合约最佳实践之solidity编码规范(代码片段)

每一门语言都有其相应的编码规范,Solidity也一样,下面官方推荐的规范及我的总结,供大家参考,希望可以帮助大家写出更好规范的智能合约。命名规范避免使用小写的l,大写的I,大写的O应该避免在命名中单独出现,因为很... 查看详情

typescriptinterfacevstype知多少(代码片段)

接口和类型别名非常相似,在大多情况下二者可以互换。在写TS的时候,想必大家都问过自己这个问题,我到底应该用哪个呢?希望看完本文会给你一个答案。知道什么时候应该用哪个,首先应该了解二者之间的相同点和不同点... 查看详情

int类型知多少(代码片段)

前言:整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。1.整型分类及存储范围整数类型字节... 查看详情

eshoponcontainers知多少[4]:catalogmicroservice(代码片段)

引言Catalogmicroservice(目录微服务)维护着所有产品信息,包括库存、价格。所以该微服务的核心业务为:产品信息的维护库存的更新价格的维护架构模式如上图所示,本微服务采用简单的数据驱动的CRUD微服务架构,来执行产品... 查看详情

ython的高级特征你知多少?来对比看看(代码片段)

...ction_name()样式来定义,但对于lambda函数,我们根本没为它命名。这是因为lambda函数的功能是执行某种简单的表达式或运算,而无需完全定义函数。lambda函数可以使用任意数量的参数,但表达式只能有一个。x=lambdaa,b:a*bprint(x(5,6))#p... 查看详情

[转]梦里babel知多少(代码片段)

平时开发中,经常需要用到ES6/ES7的语法。那么就需要用到Babel来对代码进行转码处理。 之前用Vue比较多,所以以Vue-cli作为参考来分析。 第一张图是几个月前的Vue-cli生成的 第二个图是今天使用Vue-cli生成的Babel-core顾... 查看详情

elasticsearch语法知多少之matchquery(代码片段)

目录目标ES版本信息官方文档相关术语创建相关的索引和文档(数据用于实战案例)创建索引索引文档Matchquery常见参数实战基本语法analyzer(指定分词器查询)operator(解释查询条件的布尔逻辑)minimum_should_match(最少匹配数)fuzzy... 查看详情

gtk4listmodel知多少?(代码片段)

【GTK4】LISTMODEL总结文章目录【GTK4】LISTMODEL总结一、LISTMODEL创建、管理工具1️⃣GtkSliceListModel2️⃣GtkFlattenListModel3️⃣GtkMapListModel二、LISTMODEL的具体应用1️⃣Pangoobjects2️⃣GtkDirectoryList和GtkBookmarkList3️⃣GtkDropDown三、LI 查看详情

gtk4listmodel知多少?(代码片段)

【GTK4】LISTMODEL总结文章目录【GTK4】LISTMODEL总结一、LISTMODEL创建、管理工具1️⃣GtkSliceListModel2️⃣GtkFlattenListModel3️⃣GtkMapListModel二、LISTMODEL的具体应用1️⃣Pangoobjects2️⃣GtkDirectoryList和GtkBookmarkList3️⃣GtkDropDown三、LI 查看详情

asp.netcore反向代理部署知多少(代码片段)

Nginx配置路由转发首先来看下IdentityServer4.Admin的项目结构:IdentityServer4.Admin/├──Id4.Admin.Api#用于提供访问Id4资源的WebApi项目├──Id4.Admin#用于提供管理Id4资源的Web管理面板├──Id4.STS.Identity#用于提供STS服务的Web项目作为... 查看详情

字符串匹配算法知多少?(代码片段)

...代码实现KMP算法一说到字符串匹配算法,不知道会有多少小伙伴不由自主的想起那个kmp算法呢?想到是很正常的,谁让它那么优秀呢。BF算法不要被事物的表面现象所迷惑,这个算法全称:BruteForce,有个拉... 查看详情

oauth2.0知多少(代码片段)

 1.引言周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的。可是没有我并没有简书账号,一直使用的QQ的集成登录。下面有一排社交登录按钮,我们可以用第三... 查看详情