侵权投诉

解析C语言7大编码规范

C语言编程学习 2018-02-09 15:38 次阅读

C语言编码规范

1 排版规则

1) 程序应采用缩进风格编写,每层缩进使用一个制表位(TAB),类定义、方法都应顶格书写;

2) 源程序建议使用英文书写,尽量不含有中文。每行不超过80字符。对于较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读;循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分;

3) 左花括号要另起一行,不能跟在上一行的行末;

4) 一个变量定义占一行,一个语句占一行;

5) 对独立的程序块之间、变量说明之后必须加空行;

6) 在结构成员赋值等情况,等号对齐,最少留一个空格;

7) 若函数或过程中的参数较长,则要进行适当的划分。

8) 形参的排序风格:

Ø 最常使用的参数放在第一位;

Ø 输入参数列表应放在输出参数列表的左边;

Ø 将通用的参数放在特殊的参数的左边。

2 命名规范

2.1 应用程序的命名

“系统简称”+模块名称

2.2 子模块的命名

每个子模块的名字应该由描述模块功能的1-3以单词组成。每个单词的首字母应大写。在这些单词中可以使用一些较通用的缩写。

2.3 变量的命名

变量的命名的基本原则是使得变量的含义能够从名字中直接理解。可以用多个英文单词拼写而成,每个英文单词的首字母要大写,其中英文单词有缩写的可用缩写;变量的前缀表示该变量的类型;对于作用域跨越10行以上的变量名称不能少于4个字符,除循环变量,累加变量外不得使用I、j、k等名称的变量。变量分为取全局变量和局部变量,对于全局变量以加前缀“g_”来区分。

使用有意义的英语单词,使用大小写分隔,每个单词的第一个字母为大写

解析C语言7大编码规范

考虑到习惯性和简洁性,对于按常规使用的局部变量允许采用极短的名字,如用n、i作为循环变量,p、q作为指针等。另外,要注意的是:全局变量在程序中不要定义太多,能用局部变量的就用局部变量。如果要使用相关的变量,建议采用类的方式或者结构的方式存放,以减少具体变量的个数。

2.4 常量的命名

常量所有的字母均为大写。并且单词之间使用下划线”_”隔开。

2.5 函数/过程的命名

函数/过程名称应该尽量使用能够表达函数功能的英文名称,函数名称中应该禁止使用如同function1,function2等含义不清的名称。单词间应该使用大小写分隔。全局函数/过程名称以“g_”前缀开始。

2.6 接口命名

接口名称要以大写字母开头。如果接口包含多个单词,每个单词的首字母大写,其他字母小写,如果,这些单词是缩略语(例如XML),也要首字母大写,其他字母小写(写为Xml)。

2.7 类的命名

类名称要以大写字母开头;

类名称如果包含多个单词,每个单词的首字母要大写,其他字母小写;如果这些单词是缩略语(例如XML),也要首字母大写,其他字母小写(写作Xml);

类名称应该是一个名词或名词短语;

类成员变量的命名规则与上述规则相同,但是要以“m_”开始,表示其为成员变量(Member);

类名称不能出现下划线。

2.8 方法的命名

方法名称以小写字母开头。

方法名称如果包含多个单词,除了第一个单词外,每个单词的首字母大写,其它字

母小写。如果这些单词是缩略语(例如XML),也要首字母大写,其它字母小写(写作Xml)。

方法名称应该是一个动词或动名词短语,意思是“完成什么功能”,“执行什么操作”。

2.9 数据库的命名

2.9.1 表:

采用“模块名简称+前缀+’_’+表名”的命名规则。表名以能理解该表的内容为原则,

可由中文表示,也可由代表此表含义的英文字母组成;首字母大写;前缀代表此表类别。

2.9.2 视图:

采用“模块名+’_’+视图名+’视图’”的命名规则,通常由8个以内汉字组成。

2.9.3 存储过程:

采用“Proc+模块名+’_’+存储过程名”的命名规则。

2.9.4 触发器

采用“模块名+’’+触发类型+’’+表名”的命名规则,如果有多个触发类型,则可以叠加在一起。

2.9.5 字段:

字段的命名以能理解该字段的含义为原则,通常由多个英文单词加前缀拼写而成,而组成字段名称的首字母应大写。单词有缩写的可用缩写。字段的前缀表示该字段的数据类型,其取值详见“数据类型”描述。原则上,字段的命名长度不超过18字节;描述字段的中文名称,用数据库创建工具设计数据库时,需要输入。

3 参数的约定

3.1 输入参数的约定

有些函数有输入参数,这些参数指由函数外部(调用者)输入,并在函数内部使用。在函数业务流程说明后跟输入参数说明区,用“输入参数”或“Input Parameters标记。在参数名列表中的每个参数后增加该参数的注释。

3.2 输出参数的约定

有些函数有输出参数,这些参数指由函数外部(调用者)定义,在函数内部使用并返回给调用者的参数。在输入参数说明区后跟输出参数说明区,用“输出参数”或 “Output Parameters”标记。在参数名列表中的每个参数后增加该参数的注释。另外输出参数一般以指针或应用输出。

3.3 返回值的约定

每个函数均有返回值,除非操作非常简单。对于有不同状态的返回值,建议用long型的返回值,0为成功。对于出错类返回值,在同一层次的模块,用统一代码表示。在输出参数说明区后跟返回值说明区,用“返回值”或“Return values”标记。返回值说明,要说明各种不同类型返回值以及它们的含义。

4 注释约定

在软件中对每个文件头,自定义函数和变量,重要的处理过程都要有必要的注释。

4.1 源程序头的注释和规范

每个源程序(包括存储过程)必须有头部说明、版本说明和函数结构三个部分:

源程序头部说明

FileName:

Copy Right: 

System:

Module:

Function: 

See also: 

Author:

Create Date: 本程序的外部名字(如 *.prg, *.cpp)

xxx公司 版权所有 版本信息

本文件所在的系统或工程的名字

本文件所在的功能模块名称 

简要说明本程序的功能

相关详细设计文档号

编码人员

创建日期

源程序版本说明

Editor:

Version:

Edit Date: 修改人员 

版本号

修改日期

4.2 函数头的注释和规范

Name:

Function:

Input:

Output:

Return:

Syntax:

Env:

Calling: 函数名称

简述函数或过程的功能

[参数1] - [说明…]

[参数2] - [说明…]

[参数1] - [说明…]

[参数2] - [说明…]

[返回码1] - [说明…]

[返回码2] - [说明…]

调用语法(可选)

环境要求和影响(可选的)

被调用的函数(可选的)

4.3 变量注释

直接在变量后面注明变量的用途和取值约定,例如:

4.4 类型定义注释

指类和记录等等定义的注释。在注释中标明定义的用途。

4.5 区的注释

同一个类的成员方法要求排列在一起,共同协作而实现同一个功能的函数和过程要求排列在一起。代码通常使用几个函数和过程来实现某一项功能,这时候需要使用区注释将这些具有共同目的的函数和过程标明出来。

使用整行的”*”作为隔离行,让程序清晰可读。

一般删除的代码不建议直接删除,最好用“//”注释起来。

4.6 代码中的注释

在代码中要求注释的地方有:

Ø 代码中的关键部分;

Ø 在使用特殊算法或者逻辑性较强的代码;

Ø 在修改或删除代码部分,需要加注释;修改/删除人,目的。

5 变量的作用范围

尽量做到缩小变量的作用范围,对于变量是指针的,应遵循以下约定:

Ø 在局部分配的空间在局部释放。

Ø 函数体内不能分配空间并将空间指针作为函数参数返回。

Ø 动态全局空间在程序结束时一定要释放。

Ø 所有动态分配的空间在对应层次的模块释放,并且用完马上释放。不重复释放相

同的指针。

6 函数/过程的定义

在函数的定义处应当增加本函数的功能描述的注释。用一句话描述清楚功能。可用英文或中文。功能注释格式要求所有代码一致。

7 函数业务流程的定义

在函数功能描述后,要增加函数的主要业务流程注释。可以用多行描述,以解释清楚业务流程为主。可用英文或中文。业务流程注释格式要求所有代码一致。

业务流程注释可以尽量详细,注释的长度可以与代码长度差不多,但是不要太长。

比如处理N阶乘的函数业务流程定义如下:

解析C语言7大编码规范

原文标题:【初识C语言之第二篇】编码规范

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

如何给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:15 91次 阅读
如何给C语言增加几个位操作函数

C语言的几种位操作运算

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:14 81次 阅读
C语言的几种位操作运算

基于软件的实时监看和分析音视频内容的方案

PBS与媒体技术顾问,同时也是位于华盛顿特区的Happy Robotz公司的总裁的Peter Wha....
发表于 07-14 17:19 21次 阅读
基于软件的实时监看和分析音视频内容的方案

嵌入式软件开发ARM中断实验的报告资料说明

一、实验目的(1)、学会使用 Embest IDE 编写简单的 C语言程序并进行调试;(2)、了解不....
发表于 07-14 16:42 9次 阅读
嵌入式软件开发ARM中断实验的报告资料说明

单片机C语言延时程序的注意事项

标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语....
发表于 07-14 11:13 17次 阅读
单片机C语言延时程序的注意事项

单片机C语言代码编写技巧

下面发一些我在网上看到的单片机C语言代码编写技巧和自己的一些经验来和大家分享;
发表于 07-14 11:02 34次 阅读
单片机C语言代码编写技巧

C语言的进阶学习课件资料合集

本文档的主要内容详细介绍的是C语言的进阶学习课件资料合集包括了:第1节-数据的存储,第2节-指针的进....
发表于 07-14 08:00 16次 阅读
C语言的进阶学习课件资料合集

Keil uVision4的使用详解教程概述

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有....
发表于 07-13 08:00 17次 阅读
Keil uVision4的使用详解教程概述

分享 郭天祥 十天学会C语言和51单片机视频教程+代码

郭天祥 郭天祥 十天学会C语言和51单片机 详细教程源码 回复可得 链接:https://pan.baidu.com/s/1uWWpG-o_EVscRZ3ys...
发表于 07-12 21:31 94次 阅读
分享 郭天祥 十天学会C语言和51单片机视频教程+代码

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-11 09:34 817次 阅读
如何把C++的源程序改写成C语言

关于ARM的三种中断调试方法介绍

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,....
发表于 07-10 16:01 51次 阅读
关于ARM的三种中断调试方法介绍

使用C语言写出的九九乘法表

本文档的主要内容详细介绍的是使用C语言写出的九九乘法表资料合集免费下载。
发表于 07-10 08:00 26次 阅读
使用C语言写出的九九乘法表

C语言之结构体的声明与定义

我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的....
的头像 玩转单片机 发表于 07-09 09:06 171次 阅读
C语言之结构体的声明与定义

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-08 20:51 284次 阅读
如何把C++的源程序改写成C语言

单片机C语言程序设计的详细资料

C语言目前己成为电子工程师进行单片机系统开发时的常用编程语言。用C语言来编写目标系统软件,会大大缩短....
发表于 07-07 14:48 66次 阅读
单片机C语言程序设计的详细资料

浅谈2020年六大主流编程语言

目前,计算机语言的总数总计达9000种。但是,其中只有50种编程语言是较为流行的。今天,小编就给大家....
的头像 如意 发表于 07-03 11:36 386次 阅读
浅谈2020年六大主流编程语言

单片机教程之C语言的程序设计说明

C51是在标准C的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而C51在....
发表于 07-02 17:45 59次 阅读
单片机教程之C语言的程序设计说明

c语言宏定义的使用方法

当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做....
发表于 07-02 15:04 104次 阅读
c语言宏定义的使用方法

C语言二级指针的用法与原理

提到指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(poi....
发表于 07-02 14:52 113次 阅读
C语言二级指针的用法与原理

关于NRZ与PAM4信号差异

PAM4是PAM(Pulse Amplitude Modulation,脉冲幅度调制)调制技术的一种....
的头像 电磁兼容小小家 发表于 07-02 14:40 356次 阅读
关于NRZ与PAM4信号差异

HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

链接:https://pan.baidu.com/s/1HFxkb4O1jAZvCEccWVcd4w 提取码:stns 回复可见提取码,资源需求可加q1051514663 ...
发表于 07-01 18:20 95次 阅读
HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

C语言和PHP,新手选择哪个比较好?

计科专业从事嵌入式开发多年,从现在的市场行情以及就业的机会上讲php的就业空间还是大于C语言,但并不....
的头像 如意 发表于 07-01 16:15 157次 阅读
C语言和PHP,新手选择哪个比较好?

Python的发展趋势,未来可期

首先,当前Python作为一门流行程度比较高的全场景编程语言,在IT互联网行业和一部分传统行业已经有....
的头像 如意 发表于 07-01 10:19 282次 阅读
Python的发展趋势,未来可期

怎么样才能在Keil C51环境下实现64位浮点库的设计

为解决Keil C51环境下无法进行64位双精度计算的问题,采用分部存储和分部计算的方法,设计了在K....
发表于 07-01 08:00 22次 阅读
怎么样才能在Keil C51环境下实现64位浮点库的设计

怎么样才能使用Keil C51开发大型嵌入式程序

 结合在8051系列单片机平台上的实际开发应用的经验,介绍用 Keil C在8051单片机上进行大型....
发表于 07-01 08:00 22次 阅读
怎么样才能使用Keil C51开发大型嵌入式程序

详谈选择排序算法的定义和过程

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数....
的头像 如意 发表于 06-30 17:06 112次 阅读
详谈选择排序算法的定义和过程

数码管显示拨码开关编码的程序和工程文件免费下载

本文档的主要内容详细介绍的是数码管显示拨码开关编码的程序和工程文件免费下载。
发表于 06-30 08:00 19次 阅读
数码管显示拨码开关编码的程序和工程文件免费下载

C语言模拟实现memmove函数

memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmo....
的头像 如意 发表于 06-29 17:53 124次 阅读
C语言模拟实现memmove函数

C语言模拟实现memcpy函数

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起....
的头像 如意 发表于 06-29 17:29 201次 阅读
C语言模拟实现memcpy函数

ISD4002语音录放电路的设计C语言程序免费下载

  本文档的主要内容详细介绍的是ISD4002语音录放电路的设计C语言程序免费下载。
发表于 06-29 17:20 21次 阅读
ISD4002语音录放电路的设计C语言程序免费下载

简易LCD示波器设计的C语言程序免费下载

本文档的与内容详细介绍的是简易LCD示波器设计的C语言程序免费下载。
发表于 06-29 17:20 34次 阅读
简易LCD示波器设计的C语言程序免费下载

液晶GPS定位信息显示器的设计C语言程序免费下载

本文档的主要内容详细介绍的是液晶GPS定位信息显示器的设计C语言程序免费下载。
发表于 06-29 17:20 42次 阅读
液晶GPS定位信息显示器的设计C语言程序免费下载

超声波测距器设计的C语言程序免费下载

本文档的主要内容详细介绍的是超声波测距器设计的C语言程序免费下载。
发表于 06-29 17:20 42次 阅读
超声波测距器设计的C语言程序免费下载

远程电话控制器设计的C语言程序免费下载

本文档的主要内容详细介绍的是远程电话控制器设计的C语言程序免费下载。
发表于 06-29 17:20 40次 阅读
远程电话控制器设计的C语言程序免费下载

C语言模拟实现strcmp函数

C语言模拟实现strcmp函数
的头像 如意 发表于 06-29 16:51 227次 阅读
C语言模拟实现strcmp函数

C语言模拟实现strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数....
的头像 如意 发表于 06-29 16:36 386次 阅读
C语言模拟实现strstr函数

C语言模拟实现strcat函数

C语言模拟实现strcat函数
的头像 如意 发表于 06-29 16:18 193次 阅读
C语言模拟实现strcat函数

C语言模拟实现strcpy

strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制....
的头像 如意 发表于 06-29 15:54 159次 阅读
C语言模拟实现strcpy

C语言模拟实现strlen的步骤

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是....
的头像 如意 发表于 06-29 15:48 174次 阅读
C语言模拟实现strlen的步骤

图文详解:数组和指针的传参

数组传参时,会退化为指针,所以我们先来看看什么是退化!
的头像 如意 发表于 06-29 15:34 160次 阅读
图文详解:数组和指针的传参

详谈C语言和C++的区别和联系

在学习了C语言和C++之后,这两者之间的区别我们需要仔细的捋一捋!
的头像 如意 发表于 06-29 14:56 122次 阅读
详谈C语言和C++的区别和联系

单片机程序开发的语言怎么选择

单片机程序的开发可以使用的两种语言,分别是C语言和汇编语言。这里要指出的一件事是,这不是嵌入式单片机....
的头像 电子魔法师 发表于 06-29 11:22 353次 阅读
单片机程序开发的语言怎么选择

JavaSE的基础教程讲解

Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。....
发表于 06-29 08:00 18次 阅读
JavaSE的基础教程讲解

Python基础教程第三版PDF电子书免费下载

《Python基础教程 第3版》包括Python程序设计的方方面面:首先,从Python的安装开始,....
发表于 06-29 08:00 122次 阅读
Python基础教程第三版PDF电子书免费下载

3D数学基础图形与游戏开发PDF电子书免费下载

 本书主要研究隐藏在3D几何世界背后的数学问题。3D数学是一门与计算几何相关的学科,计算几何则是研究....
发表于 06-29 08:00 76次 阅读
3D数学基础图形与游戏开发PDF电子书免费下载

C语言精华知识:表驱动法编程实践

根据字典中的部首检字表查找读音未知的汉字就是典型的表驱动法,即以每个字的字形为依据,计算出一个索引值....
的头像 玩转单片机 发表于 06-28 17:10 203次 阅读
C语言精华知识:表驱动法编程实践

聊聊我为什么热爱开源

后面的学习过程中,接触了单片机,我发现这东西也很有趣,能做点小东西,做个时钟、小车、LED小蛮腰。。....
的头像 玩转单片机 发表于 06-28 17:07 179次 阅读
聊聊我为什么热爱开源

Linux TraceEvent - 史上最长宏定义

看完了例子,我们就该看代码实现了。讲真,这是我见过的最长的宏展开了。之前在qemu上看到的那个hmp....
的头像 Linuxer 发表于 06-28 09:34 245次 阅读
Linux TraceEvent - 史上最长宏定义

Python快速入门手册免费下载

实际上 C 语言跟 Python 是有很密切的交际的。 当我们从 Python 官方网站下载并安装好....
发表于 06-28 08:00 36次 阅读
Python快速入门手册免费下载

MCS51单片机的指令编码资料详细说明

本文档的主要内容详细介绍的是MCS51单片机的指令编码资料详细说明。
发表于 06-28 08:00 41次 阅读
MCS51单片机的指令编码资料详细说明

在学习Python过程中,遇到的4个编码错误

一年前,我开始学习Python,那时候的我已经学会其他一些编程语言,例如PHP(把我引入到Web开发....
的头像 如意 发表于 06-27 16:13 129次 阅读
在学习Python过程中,遇到的4个编码错误

在C语言中,全局变量滥用的后果是什么

01 啥是全局变量 说起全局变量,就不得不提到全局变量,局部变量,静态全局变量,静态局部变量,这些都....
发表于 06-24 17:14 84次 阅读
在C语言中,全局变量滥用的后果是什么

盘点一些在C语言中比较容易犯的错误

本题中的#运算符可以利用宏参数创建字符串。##运算符和#运算符一样也可以用于类函数宏的替换部分。另外....
发表于 06-24 16:45 44次 阅读
盘点一些在C语言中比较容易犯的错误

C语言的策略模式提高了程序的可维护性和扩展性

这里先插一点题外话,在C语言中,实现封装、继承、隐藏、多态等等特性,是完全没有问题的。但是在使用过程....
发表于 06-24 16:29 52次 阅读
C语言的策略模式提高了程序的可维护性和扩展性

从技术学习和实际运用的角度来看C/C++和Java的区别

关于C语言和C++的学习路线终于梳理完了。当然我也只能从我曾经近3年的通信公司后台开发经历和目之所及....
发表于 06-24 16:16 71次 阅读
从技术学习和实际运用的角度来看C/C++和Java的区别

C语言流程控制的详细资料概述

学习C语言必备,少走弯路
发表于 06-24 10:59 39次 阅读
C语言流程控制的详细资料概述

大学生如何学习FPGA初学者怎么学FPGA

无论是从自身的发展,还是从FPGA所拥有的巨大市场来讲,学习FPGA都是一个不错的选择,对大家来说FPGA技术可能还是新...
发表于 06-23 15:12 296次 阅读
大学生如何学习FPGA初学者怎么学FPGA

有人用过C语言位域吗

typedef struct {u16 b :5; u16 g :6; u16 r :5; } RGB; RGB *rgb; tx=0xf40f;        ...
发表于 06-16 04:35 47次 阅读
有人用过C语言位域吗

知道C语言的用法但是avr里面并没有time这个头文件,是要用中断吗

知道C语言的用法但是avr里面并没有time这个头文件,是要用中断吗, 求大神神助解答 ...
发表于 06-15 05:56 994次 阅读
知道C语言的用法但是avr里面并没有time这个头文件,是要用中断吗

GPIOA->CRH&=0xFFFFFFFO什么意思呀?

问一下GPIOA->CRH&=0xFFFFFFFO什么意思呀?因为我是菜鸟刚看这个根本什么都不知道!!!...
发表于 06-13 09:00 191次 阅读
GPIOA->CRH&=0xFFFFFFFO什么意思呀?