当前位置: 首页 > news >正文

四种基本的编程命名规范

目前,共有四种基本的编程命名规范,分别是匈牙利命名法、驼峰式命名法、帕斯卡命名法和下划线命名法,其中前三种命名法较为流行。

例如:iMyData是一个匈牙利命名法;myData是一个驼峰式命名法;MyData是一个帕斯卡命名法;my_data是一个下划线命名法。

在后四篇文章中我会具体讲解每种命名法的命名规则,在此之前我们了解一下命名的基本规则。

(1)标识符的命名要清晰明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。尽量采用英文单词或中文全拼表示,若出现英文和中文混合定义时,使用连字符“-”将英文和中文割开。较短的单词可以通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;还有一些单词拥有大家公认的缩写。例如:temp->tmp、message->msg等缩写能够被大家基本认可。

(2)命名中若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处对文件中所使用的缩写或约定,特别是要对特殊的缩写进行必要的注释说明。

(3)自己特有的命名风格要自始至终保持一致,不可来回变化。个人的命名风格,在符合所在项目组或产品组的命名规则的前提下才可使用,即命名规则中没有规定到的地方才可以有个人命名风格。

(4)对于变量命名,禁止取单个字符,如i、j、k等,建议除了要有具体的含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。

(5)除非必要,不要使用数字或较奇怪的字符来定义标识符。

(6)命名规范必须与所使用的系统风格保持一致并在同一项目中统一。

 编程命名规范之匈牙利命名法

匈牙利命名法是一种编程时的命名规范,由微软公司Excel的主要设计者查尔斯·西蒙尼提出,因为西蒙尼是匈牙利人,所以称这种命名规范为匈牙利命名法。

匈牙利命名法的基本原则是:变量名=属性+类型+对象描述。其中对每一个对象名称都要求有明确含义,比如取对象名字的全称或一部分,命名要容易记忆与理解,且保证其连贯性。

匈牙利命名法为C标识符的命名定义了一种非常标准化的方式,以如下两条规则为基础:

1)标识符的名字以一个或多个小写字母开头,用这些字母来指定数据类型。

2)在标识符内,前缀以后就是一个或多个第一个字母大写的单词,这些单词清楚地指出了源代码内该对象的用途。

例如:m_szStudentName表示一个学生名字的类成员变量,数据类型是以“\0”结束的字符串型。

前缀类型:

前缀类型

b

布尔型

c

字符型
C类或结构

d

双精度型

f

浮点型
i整型
l长整型
m_成员变量
n无符号值
p指针
S结构体
sz以“\0”结束的字符串
str字符串型

编程命名规范之驼峰式命名法

驼峰式命名法又称骆驼式命名法,由于Perl语言中普遍使用大小写混合格式,而Larry Wall等人所著的畅销书《Programming Perl》的封面图片是一匹骆驼,所以称这种命名规范为骆驼式命名法。

驼峰式命名法混合使用大小写字母来构成变量和函数的名字,我们可以将驼峰式命名法的命名规则视为一种惯例,使用驼峰式命名法是为了增加识别性与可读性。

一般我们所说的驼峰式命名法指的是小驼峰式命名法。

小驼峰式命名法的命名规则为:firstName,camelCase。也就是说,除了第一个单词之外,其他单词的首字母大写,常用于变量的命名。

例如:int myStudentCount

注意事项:

1)由于Java面向对象编程的特性,在命名时应尽量选择名词。

2)包名的书写规范推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司或机构内所使用的包名的唯一性,包名全部为小写字母,且具有实际的区分意义。

编程命名规范之帕斯卡命名法 

帕斯卡命名法又称大驼峰式命名法,其命名规则为:FirstName,CamelCase。也就是说,所有单词的首字母大写,常用于类名的命名。

例如:public class DataBaseUser

注意事项:

1)单字之间不以空格断开或连接号(-)、底线(_)连结。

2)在C#中,以帕斯卡命名法和骆驼命名法居多。C#的编码惯例中,给公共成员变量(public)、受保护的成员变量(protect)或内部成员变量(internal)命名时,应使用帕斯卡命名法命名,给私有成员变量(private)命名时,应使用驼峰式命名法命名,并以一个下划线开头。

命名时的良好习惯:

(1)自定义的属性以Attribute结尾。

(2)自定义的异常以Exception结尾。

(3)方法的命名一般为动宾短语,例如:CreateFile()。

(4)代码的缩进要用Tab,不用Space。

(5)局部变量和命名空间(namespace)的名字要有意义。

(6)生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string。

编程命名规范之下划线命名法 

下划线命名法要求名称中的每一个逻辑断点都用一个下划线来标记,即使用下划线分割多个单词。随着C语言的出现,下划线命名法逐渐流行起来,在Unix、Linux环境下以及在GNU代码中的使用非常普遍。

例如:int my_age

使用下划线命名法,单词字母都是小写,看起来十分简洁。

Python中使用下划线命名的规则:

(1)前后无下划线表示该变量、函数、成员或方法公有,可以以任何形式访问。

(2)前置单下划线表示该内容受保护,被看作是“protect”,意味着只有类对象和子类对象自己能访问到这些变量,在模块或类外不可以使用,不能用“from module import *”导入。

(3)私有成员“private”,前置双下划线表示该变量、函数、成员或方法私有,意味着只有类对象自己能访问,连子类对象也不能访问到这个数据,不能用“from module import *”导入。

(4)前后双下划线的命名方式用于Python里的特殊方法,用户不要这样定义。

(5)后置单下划线,用于避兔和Python关键词冲突,无特殊含义。

相关文章:

四种基本的编程命名规范

目前,共有四种基本的编程命名规范,分别是匈牙利命名法、驼峰式命名法、帕斯卡命名法和下划线命名法,其中前三种命名法较为流行。 例如:iMyData是一个匈牙利命名法;myData是一个驼峰式命名法;MyData是一个帕…...

【前端】在 TypeScript 中使用 AbortController 取消异步请求

在 TypeScript 中使用 AbortController 来取消异步请求,尤其是像 fetch 这样的请求,可以提供一种优雅的方式来中止长时间运行的操作。下面是一个详细的步骤说明,展示如何在 TypeScript 中使用 AbortController 取消 fetch 请求。 步骤 1&…...

k8s知识点总结

docker 名称空间 分类 Docker中的名称空间用于提供进程隔离,确保容器之间的资源相互独立。主要分类包括: PID Namespace:进程ID隔离,使每个容器有自己的进程树,容器内的进程不会干扰其他容器或主机上的进程。 NET Nam…...

论文阅读:三星-TinyClick

《Single-Turn Agent for Empowering GUI Automation》 赋能GUI自动化的单轮代理 摘要 我们介绍了一个用于图形用户界面(GUI)交互任务的单轮代理,使用了视觉语言模型Florence-2-Base。该代理的主要任务是识别与用户指令相对应的UI元素的屏幕…...

Windows on ARM上使用sherpa-onnx实现语音识别

Windows on ARM上使用sherpa-onnx实现语音识别 下载模型准备声音文件测试下载模型 模型所在的地址在这里(),通过git命令将模型下载下来 模型:hfd地址 git clone https://hf-mirror.com/csukuangfj/sherpa-onnx-streaming-paraformer-bilingual-zh-en将如下的代码保存成一个…...

Unity 打包AB Timeline 引用丢失,错误问题

1、裁剪 在 link.xml 添加 <assembly fullname"Unity.Timeline" preserve"all"/> 上面这一步我其实做了&#xff0c;但还是不行&#xff0c;各种搜索&#xff0c;不得解&#xff0c;还有创建一个空的Timeline 放到 Resources目录下的&#xff0c;也…...

【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)

文章目录 一、安装1、解压2、修改字符集3、启动 二、实战1、将hive数据导入mysql2、将mysql数据导入到hive 一、安装 Kettle的安装包在文章结尾 1、解压 在windows中解压到一个非中文路径下 2、修改字符集 修改 spoon.bat 文件 "-Dfile.encodingUTF-8"3、启动…...

STM32的hal库在实现延时函数(例如:Delay_ms 等)为什么用滴答定时(Systick)而不是定时器定时中断,也不是RTC?

STM32的HAL库在实现延时函数&#xff08;如Delay_ms等&#xff09;时选择使用滴答定时器&#xff08;Systick&#xff09;而非定时器定时中断或RTC&#xff08;实时时钟&#xff09;&#xff0c;主要基于以下几个原因&#xff1a; Systick定时器的优势 集成在NVIC中&#xff…...

刚刚买的域名被DNS劫持了怎么处理

在当今数字化的时代&#xff0c;域名作为网络世界的重要标识&#xff0c;对于个人和企业的在线业务都至关重要。然而&#xff0c;有时会遭遇令人头疼的问题&#xff0c;比如新买的域名被DNS劫持。这不仅会影响网站的正常访问&#xff0c;还可能导致用户信息泄露、业务受损等严重…...

递归 算法专题

递归题目技巧 什么是递归 函数自己调用自己的情况为什么会用到递归 本质: 主问题, 可以拆分成相同的子问题 子问题, 又可以拆分出相同的子问题如何理解递归? 宏观的看待递归的过程 1)不要在意递归的细节展开图 2)把递归的函数当成一个黑盒 3)相信这个黑盒一定能够完成这个任务…...

Logstash 迁移索引元数据(设置和映射)

https://help.aliyun.com/zh/es/use-cases/use-logstash-to-migrate-full-or-incremental-data-from-self-managed-elasticsearch-to-alibaba-cloud-elasticsearch 在进行数据迁移时&#xff0c;Logstash会帮助您自动创建索引&#xff0c;但是自动创建的索引可能与您待迁移的索…...

用python将pdf转成图片转换成对应的word文件

*科管系统**报告只能上传word&#xff0c;但是有些盖章文件只有pdf版本&#xff0c;因此有这个需求&#xff0c;目前市面上没这软件&#xff0c;只能自己python写一个。 要将PDF中的页面以图片的形式存储到Word文档中&#xff0c;你需要完成以下几个步骤&#xff1a; 从PDF中…...

list(c++)

list介绍 list是STL容器中的容器&#xff0c;且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表&#xff0c;其优势是在任意位置插入和删除元素的时间复杂度为O(1)&#xff0c;但无法通过“下标[ ]”直接访问元素&#xff0c;需要通过从头&#xff08;尾&#…...

51单片机STC8G串口Uart配置

测试环境 单片机型号&#xff1a;STC8G1K08-38I-TSSOP20&#xff0c;其他型号请自行测试&#xff1b; IDE&#xff1a;KEIL C51&#xff1b; 寄存器配置及主要代码 STC8G系列单片机具有4个全双工异步串行通信接口&#xff1b;本文以串口1为例&#xff0c;串口1有4种工作方式…...

uni-app使用movable-area 实现数据的拖拽排序功能

文档地址 template部分 <movable-area :style"getAreaStyle"><movable-view class"table-row" v-for"v,i in move.list":key"v.id":y"v.y"change"handle_moving"direction"vertical"touchst…...

如何设置使PPT的画的图片导出变清晰

PPT画的流程图另存为图片 插入WORD不清晰的解决办法&#xff1a; 第一步&#xff1a;先调整PPT分辨率 根据此链接修改PPT默认的导出dpi 第二步&#xff1a;新建PPT准备 首先看想要保存的图的尺寸&#xff1a;点击图形-格式-长宽 新建一个ppt-设计-幻灯片大小-自定义大小 …...

和鲸科技 CEO 范向伟受邀揭牌启动南京大学 2024 级大学生人工智能素养大赛

2024 年 10 月 26 日&#xff0c;南京大学第十九届读书节在仙林校区图书馆举行开幕仪式。中国科学院院士、南京大学校长谈哲敏&#xff0c;校党委常委、副校长索文斌&#xff0c;原副校长、关工委主任闵铁军出席仪式&#xff0c;南京大学相关学院和职能部处负责人&#xff0c;以…...

NewStarCTF2024-Week4-Web-WP

目录 1、blindsql2 2、chocolate 3、隐藏的密码 4、ezcmsss 题目对勇师傅来说已经是开始上难度了所以这周没有AK 分享下自己做出来的题的解题思路 1、blindsql2 原本是在继续构造新的 payload&#xff0c;也测到了延时 打算去改上周的脚本&#xff0c;结果去跑的时候忘了将…...

Java学习Day56:暴打舔狗!(SpringBoot)

1.springboot简介 核心能力&#xff1a;Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力&#xff1a;MVC、嵌入式Web服务器 数据访问(持久化)&#xff1a;关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术&#xff0c…...

RSA加密算法实现

Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的…...

从AI概念到落地:传统AI与生成式AI的技术分野与实战选型

1. 从“谈AI色变”到“用AI解题”&#xff1a;我们到底在讨论什么&#xff1f;如果你最近两年没在火星上度假&#xff0c;那你肯定被“AI”这个词全方位轰炸过。从科技媒体的头条&#xff0c;到投资机构的报告&#xff0c;再到你手机里突然冒出的各种“智能”功能&#xff0c;A…...

汉字可视化探索平台:基于Flask+Vue的汉字浏览系统架构与实现

1. 项目概述&#xff1a;一个汉字学习者的“浏览器”如果你和我一样&#xff0c;对汉字的结构、演变和背后的文化故事着迷&#xff0c;那你一定经历过这样的时刻&#xff1a;在阅读古籍、碑帖&#xff0c;或者仅仅是看到一个生僻字时&#xff0c;心里会冒出无数个问号——这个字…...

绕过Cursor AI消费限额前端Bug:浏览器控制台脚本实现API直接管理

1. 项目概述与背景 最近在深度使用Cursor这款AI代码编辑器时&#xff0c;遇到了一个挺让人头疼的问题。Cursor的付费模式是典型的用量计费&#xff0c;也就是所谓的“按需付费”&#xff0c;这对于我们这些高频使用者来说&#xff0c;确实需要设置一个消费上限&#xff0c;以防…...

从文献检索到论文写作:Perplexity与Zotero构建AI-native科研流水线(实测单篇综述效率提升3.8倍)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从文献检索到论文写作&#xff1a;Perplexity与Zotero构建AI-native科研流水线&#xff08;实测单篇综述效率提升3.8倍&#xff09; 在AI-native科研范式下&#xff0c;传统文献管理与写作流程正被重构…...

别再为本科毕业论文熬大夜!Paperxie 智能写作,一键搞定终稿的正确姿势

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 又到了本科毕业论文冲刺的季节&#xff0c;多少同学还在对着空白文档发呆&#xff1f;选题纠结半天定不下来&…...

ARM MPMC内存控制器架构与优化策略

1. ARM MPMC内存控制器架构解析在嵌入式系统设计中&#xff0c;内存控制器作为处理器与存储设备之间的桥梁&#xff0c;其性能直接影响整个系统的运行效率。ARM PrimeCell多端口内存控制器(MPMC)是一种高度可配置的IP核&#xff0c;支持与多种类型存储设备的连接&#xff0c;包…...

5G O-RAN中AI驱动的延迟预测系统设计与优化

1. 项目背景与核心价值在5G O-RAN架构中&#xff0c;延迟控制一直是网络优化的核心痛点。传统电信设备厂商采用的黑盒方案&#xff0c;使得运营商难以针对特定场景进行精细化调优。而O-RAN的开放特性虽然带来了灵活性&#xff0c;但也引入了新的挑战——当CU&#xff08;集中单…...

MegaParse:一站式文档解析库的设计原理与工程实践

1. 项目概述&#xff1a;从“MegaParse”看文档解析的“大”与“全”在信息爆炸的时代&#xff0c;我们每天都要处理海量的文档——PDF报告、Word合同、Excel表格、PPT演示稿&#xff0c;甚至网页截图和扫描件。对于开发者、数据分析师和知识管理从业者来说&#xff0c;如何将这…...

IP2366至为芯支持C口双向快充的140W多串锂电池充放电SOC芯片

英集芯IP2366是一款应用于移动电源、电动工具、智能家居、储能电源等方案的多串锂电池充电SOC芯片。支持高达140W的双向同步升降压充放电&#xff0c;充电电流可达5A。支持2至6节锂电池/磷酸铁锂电池串联&#xff0c;集成PD3.1、QC3.0等多种快充协议。内置14bit ADC&#xff0c…...

终极指南:如何让淘宝淘金币任务全自动完成,每天节省20分钟

终极指南&#xff1a;如何让淘宝淘金币任务全自动完成&#xff0c;每天节省20分钟 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/tao…...