C程序开发规范

C语言编程实践指南:规范与命名规则详解 C语言作为一种高效、灵活且功能强大的编程语言,在计算机科学领域有着广泛的应用。然而,随着项目规模的增大和团队协作的增多,遵循一定的编程规范和命名规则变得尤为重要。这不仅有助于提高代码的可读性、可维护性和可扩展性,还能减少因编码风格不一致而导致的沟通和协作障碍。本文将详细介绍C语言编程中的规范和命名规则,为开发者提供一份实用的实践指南。 阅读详情
 

程序设计规范

 

1. 文件夹与文件的命名规则

1.1 文件夹命名

 

① 根据系统设计所规定的结构,建立相应的文件夹,根据需要建立子文件夹

② 文件夹的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字

③ 文件夹名称的必须全部使用小写字母 (如 “ /example ” )

1.2 文件命名

 

① 文件的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字

② 文件名称全部使用小写字母(确保平台兼容)

③ 文件名称一般采用”xxx_yyy.ext”格式,xxx(3-4个字母)表示分类,yyy(字母数自定)表示操作 (如 “ /example/exp_edit.htm ”)

2. 程序书写规则

2.1 变量命名

 

所有变量必须能够反映变量的作用,采用如下命名规则:

⑴ 常数命名约定

用 Const 语句创建真正的常数。这个约定使用大小写混合的格式,并以“con”作为常数名的前缀。例如:

conYourOwnConstant

 

⑵ 变量命名约定

出于易读和一致性的目的,请在 VBScript 代码中使用以下变量命名约定:

类型

前缀

示例

 

Boolean

Bln

blnFound

 

Byte

byt

bytRasterData

 

Date (Time)

dtm

dtmStart

 

Double

dbl

dblTolerance

 

Error

err

errOrderNum

 

Integer

int

intQuantity

 

Long

lng

lngDistance

 

Object

obj

objCurrent

 

Single

sng

SngAverage

 

String

str

strFirstName

 

 

⑶ 变量作用域前缀

随着 Script 代码长度的增加,有必要快速区分变量的作用域。在类型前缀前面添加一个单字符前缀可以实现这一点,而不致使变量名过长。

作用域

前缀

示例

 

过程级

无

dblVelocity

 

Script级

s

sblnCalcInProgress

 

全程级

g

gblnCalcInProgress

 

 

⑷ 描述性变量名和过程名

变量名或过程名的主体应使用大小写混合格式,并且尽量完整地描述其目的。另外,过程名应以动词开始,例如 InitNameArray 或 CloseDialog。对于经常使用的或较长的名称,推荐使用标准缩写以使名称保持在适当的长度内。通常多于 32 个字符的变量名会变得难以阅读。使用缩写时,应确保在整个 Script 中保持一致。

 

对象命名约定,下表列出了 VBScript 中可能用到的对象命名约定(推荐):

对象类型

前缀

示例

 

文本框

txt

txtLastName

 

列表框

lin

linVertical

 

复选框

chk

chkReadOnly

 

组合框、

下拉列表框

cbo

cboEnglish

 

标签

lbl

lblHelpMessage

 

命令按钮

cmd

cmdExit

 

框架

fra

fraLanguage

 

图像

img

imgIcon

 

直线

lst

lstPolicyCodes

 

公共对话框

dlg

dlgFileOpen

 

水平滚动条

Hsb

hsbVolume

 

垂直滚动条

vsb

vsbRate

 

 

⑸ 代码注释约定

所有过程的开始部分都应有描述其功能的简要注释。当传递给过程的参数的用途不明显,或过程对参数的取值范围有要求时,应加以说明。如果过程改变了函数和变量的返回值(特别是通过参数引用来改变),也应在过程的开始部分描述该返回值。

 

过程开始部分的注释应包含以下区段标题。相关样例,请参阅后面的“格式化代码”部分。

 

区段标题 注释内容

目的 过程的功能(不是实现功能的方法)。

假设 其状态影响此过程的外部变量、控件或其他元素的列表。

效果 过程对每个外部变量、控件或其他元素的影响效果的列表。

输入 每个目的不明显的参数的解释。每个参数都应占据单独一行并有其内部注释。

返回 返回值的解释。

请记住以下几点:

 

每个重要的变量声明都应有内部注释,描述变量的用途。

应清楚地命名变量、控件和过程,仅在说明复杂细节时需要内部注释。

应在 Script 的开始部分包含描述该 Script 的概述,列举对象、过程、运算法则、对话框和其他系统从属物。有时一段描述运算法则的假码是很有用的。

格式化代码

应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:

标准嵌套块应缩进 4 个空格。

过程的概述注释应缩进 1 个空格。

概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。例如:

'*********************************************************

' 目的: 返回指定用户在 UserList 数组中第一次出现的位置。

' 输入: strUserList(): 所查找的用户列表。

' strTargetUser: 要查找的用户名。

' 返回: strTargetUser 在 strUserList 数组中第一次出现时的索引。

' 如果目标用户未找到,返回 -1。

' 日期: Designed by MS 2000/9/12

'*********************************************************

 

Function intFindUser (strUserList(), strTargetUser)

Dim i ' 循环计数器。

Dim blnFound ' 发现目标的标记。

intFindUser = -1

i = 0 ' 初始化循环计数器。

Do While i <= Ubound(strUserList) and Not blnFound

If strUserList(i) = strTargetUser Then

blnFound = True ' 标记设为 True。

intFindUser = i ' 返回值设为循环计数器。

End If

i = i + 1 ' 循环计数器加 1。

Loop

End Function

 

2.2 公用函数库

 

① 所有公用函数文件均放在“ /include ”目录下,统一管理,并作适当归类和调整

② 所有公用函数必须在函数前以注释方式书写函数作用,参数定义和返回值,例如:

2.4 注释

 

① 注释尽量使用中文

② 每个程序开始部分必须有以下注释:

程序名称、程序描述、实现功能、设计人员、设计日期

③ 程序代码部分必须有足够的代码片段的注释,表达清楚该程序片段的编写意图和实现原理

2.5 程序结构

 

① 程序代码中要有足够的容错处理功能

② 报表程序与查询程序应该具有灵活性,尽量提供给用户足够的选择

③ 程序代码结构必须层次清楚,适当使用空行分段

3. 界面设计规则

 

1. 界面设计尽量美观、实用、统一

2. 界面设计应尽量参考美工的建议

4. 测试规则

 

1. 程序编写完成后,应进行必要的测试。

2. 测试用例要覆盖各功能模块。

命名规则

比较著名的命名规则当推Microsoft公司的“匈牙利”法,该命名规则的主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。例如所有的字符变量均以ch为前缀,若是指针变量则追加前缀p。如果一个变量由ppch开头,则表明它是指向字符指针的指针。

 

“匈牙利”法最大的缺点是烦琐,例如

 

int i, j, k;

 

float x, y, z;

 

倘若采用“匈牙利”命名规则,则应当写成

 

int iI, iJ, ik; // 前缀 i表示int类型

 

float fX, fY, fZ; // 前缀 f表示float类型

 

如此烦琐的程序会让绝大多数程序员无法忍受。

 

据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施。

 

3.1 共性规则

本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循这些共性规则的前提下,再扩充特定的规则,如3.2节。

 

 

l 【规则3-1-1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

 

标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。

 

 

l 【规则3-1-2】标识符的长度应当符合“min-length && max-information”原则。

 

几十年前老ANSI C规定名字不准超过6个字符,现今的C++/C不再有此限制。一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。那么名字是否越长约好?不见得! 例如变量名maxval就比maxValueUntilOverflow好用。单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。

 

 

l 【规则3-1-3】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

 

例如Windows应用程序的标识符通常采用“大小写”混排的方式,如AddChild。而Unix应用程序的标识符通常采用“小写加下划线”的方式,如add_child。别把这两类风格混在一起用。

 

 

l 【规则3-1-4】程序中不要出现仅靠大小写区分的相似的标识符。

 

例如:

 

int x, X; // 变量x 与 X 容易混淆

 

void foo(int x); // 函数foo 与FOO容易混淆

 

void FOO(float x);

 

 

l 【规则3-1-5】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

 

 

l 【规则3-1-6】变量的名字应当使用“名词”或者“形容词+名词”。

 

例如:

 

float value;

 

float oldValue;

 

float newValue;

 

 

l 【规则3-1-7】全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。

 

例如:

 

DrawBox(); // 全局函数

 

box->Draw(); // 类的成员函数

 

 

l 【规则3-1-8】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

 

例如:

 

int minValue;

 

int maxValue;

 

 

int SetValue(…);

 

int GetValue(…);

 

 

2 【建议3-1-1】尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

 

3.2 简单的Windows应用程序命名规则

作者对“匈牙利”命名规则做了合理的简化,下述的命名规则简单易用,比较适合于Windows应用软件的开发。

 

 

l 【规则3-2-1】类名和函数名用大写字母开头的单词组合而成。

 

例如:

 

class Node; // 类名

 

class LeafNode; // 类名

 

void Draw(void); // 函数名

 

void SetValue(int value); // 函数名

 

 

l 【规则3-2-2】变量和参数用小写字母开头的单词组合而成。

 

例如:

 

BOOL flag;

 

int drawMode;

 

 

l 【规则3-2-3】常量全用大写的字母,用下划线分割单词。

 

例如:

 

const int MAX = 100;

 

const int MAX_LENGTH = 100;

 

 

l 【规则3-2-4】静态变量加前缀s_(表示static)。

 

例如:

 

void Init(…)

 

{

 

static int s_initValue; // 静态变量

 

…

 

}

 

 

l 【规则3-2-5】如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

 

例如:

 

int g_howManyPeople; // 全局变量

 

int g_howMuchMoney; // 全局变量

 

 

l 【规则3-2-6】类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

 

例如:

 

void Object::SetValue(int width, int height)

 

{

 

m_width = width;

 

m_height = height;

 

}

 

 

l 【规则3-2-7】为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。例如三维图形标准OpenGL的所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。

 


Google C 编程规范手册 PDF 电子版.rar C 编程规范手册 PDF,互联网巨头Google公司的工程师使用的电子书,内容涉及头文件、作用域、类、google特有的风情、命名约定、注释、格式、规则之例外、团队合作、其它C 特性等内容。每一章都讲得很详细,还配有示例,大公司的确是很规范的,阅读本书可带你进入规范编写C 应用程序的世界。 立即下载

相关推荐

实用各种公共函数库

实用各种公共函数库,本人综合各种软件,原创,可直接引用

蛙蛙推荐:C程序开发规范.doc

程序设计规范 1. 文件夹与文件的命名规则1.1 文件夹命名 ① 根据系统设计所规定的结构,建立相应的文件夹,根据需要建立子文件夹② 文件夹的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字③ 文件夹名称的必须全部使用小写字母 (如 “ /example ” )1.2 文件命名  ① 文件的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字

蛙蛙池塘 1318

C程序开发经典实例

C语言程序开发经典实例

uniapp vue超全公用函数 工具库

uniapp实现定义变量和函数在main.js中挂载公用属性和公用函数页面中使用。

m0_60284090的博客 1357

C程序开发C程序开发

C程序开发

集成calibre到cadence virtuoso环境中 load: can‘t access file - “/opt/eda/Mentor/lib/calibre.skl“

项目场景: 设想是将Calibre集成到cadence virtuoso中,但网上的解决办法尝试过在本机上实验都有点问题,因此想记录下来我的解决办法仅供参考。 问题描述: 安装好cadence, calibre之后打开virtuoso,CIW窗口显示 *Error* load: can't access file - "/opt/eda/Mentor/lib/calibre.skl" 问题是出在calibre.skl的加载路径出错,尝试网上的在工程目录下修改.cdsinit文件,添加calibre安装

weixin_52714276的博客 1万+

公共函数库的介绍与使用

公共函数意思就完全公开的函数,在平台的任意一个角落都可以调用,智能窗体构建时、表单流程的扩展代码中、主页插件配置时、以及主窗体事件中都是可以调用的,但是目前不能调用这些公共函数的只有一个地方,那就是在报表设计器里面设计报表的时候不能调用。 公告函数的菜单在开发工具下面就能看到,如下图: 上图展示的公告函数是把接收到的身份证号计算出年龄,并把计算出来的年龄传回去。

快速开发平台研究 1094

欧姆龙多PLC串行链接模式的应用

欧姆龙多PLC串行链接模式的应用 一、如何将两台CP1H进行串行PLC连接(PLC串行链接) 主机侧设定 从机侧设定 二、 如何实现编程通信 主机侧的【PC连接模式】为【全部】的时候 ① 主机会把自己的地址从3100开始,按照【链接字】设定的字数个数发送到每个从机的3100开始进行存储。 ② 从机会把自己的地址从31n0开始,按照主机侧参数【链接字】设定的字数个数发送到主机的31n0开始进行存储。 注:(n为从机的地址号,若从机号不连续,则该编号的地址将不被定义..

u014202847的博客 3086

公司自用的C语言编程规范

内容布局 【规则1-1】遵循统一的布局顺序来书写头文件。 说明:以下内容如果某些节不需要,可以忽略。但是其它节要保持该次序。 文件注释 #ifndef 文件名_H(全大写) #define 文件名_H 其它预编译条件选项 #include(依次为标准库头文件、非标准库头文件) 常量和全局宏定义全局宏 全局数据类型 全局变量声明(extern) 全局...

knight_zhuge的专栏 777

Aveva Marine C# 二次开发入门001

1# 引用 C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.dll C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.ApplicationFramework.Presentation;usi...

weixin_30245867的博客 1911

PCL 计算点云AABB包围盒的体积【2026最新版】

AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即可!博客长期更新,本文最近一次更新时间为:2026年5月3日。

点云侠的博客 2295

C程序开发规范.doc

程序设计规范 1. 文件夹与文件的命名规则1.1 文件夹命名 ① 根据系统设计所规定的结构,建立相应的文件夹,根据需要建立子文件夹② 文件夹的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字③ 文件夹名称的必须全部使用小写字母 (如 “ /example ” )1.2 文件命名  ① 文件的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能汉字② 文件名称全部使用小写字母(确保平台兼容)

cosio的专栏 1066

jeecg-boot getDictItemsByTable接口存在SQL注入漏洞CVE-2024-48307

微信公众号搜索:南风漏洞复现文库该文章 南风漏洞复现文库 公众号首发JeecgBoot 是一款开源的的低代码开发平台。

nnn2188185的博客 330

C语言-C语言概述以及预备知识

C语言基础:C语言概述以及C语言预备知识

m0_74147998的博客 885

Redhawk:什么是timing window?

STA timing file中timing window的作用和计算方式

m0_61544122的博客 1万+

Uni-App 使用极光推送完整指南

Uni-App集成极光推送的完整指南:从注册极光账号到代码实现。包含前期准备(获取AppKey、注册厂商账号)、Uni-App配置(插件导入、初始化代码)、高级功能(角标设置、Java后台接口)及常见问题排查。详细说明了推送监听、registrationID获取、消息接收处理等核心功能实现步骤,并提供两种推送接口示例(按平台推送和统一推送)。适合需要在Uni-App项目中实现推送功能的开发者参考。

cyj0919的博客 425

嵌入式软件设计规范资源下载介绍

嵌入式软件设计规范资源下载介绍 【下载地址】嵌入式软件设计规范资源下载介绍 《嵌入式软件设计规范》是一份专为C程序开发人员和嵌入式系统爱好者打造的内部规范,旨在帮助开发者深入理解嵌入式软件设计的核心方法和技巧。文档内容涵盖了从基本概念、开发流程到编码规范、软件测试及项目管理的全方位指导,结构清晰,实用性强。无论您是初学者...

gitblog_06761的博客 421

YOLOv8集成EMA注意力机制YOLOv8完整教程 将EMA注意力机制集成到YOLOv8框架中

YOLOv8教程这篇文章介绍了如何将EMA(高效多尺度注意力)机制集成到YOLOv8目标检测框架中。YOLOv8 EMA注意力机制通过多尺度特征融合和高效计算,能够提升模型对关键特征的关注能力。文章详细解析了EMA的原理和结构设计,包括其核心组件和前向传播过程。此外,提供了完整的实现指南,包括环境准备、项目结构设置、EMA模块代码实现(包含分组处理、空间注意力计算和特征融合等关键步骤)。YOLOv8 YOLOv8 YOLOv8 YOLOv8 YOLOv8

FJN110的博客 925

C语言入门基础1:概述

计算机组成计算机:能进行计算以及逻辑处理的设备硬件:组成计算机的物理部件。(内存条、CPU、硬盘..)开发中对于硬件的认知:硬件包括电子设备、单片机、集成电路和嵌入式系统。软件:计算机中运行的程序和数据。开发中对于软件的认知:软件分为系统软件(OS)、应用软件和编程工具(编译器)计算机的六大部件中央处理器(CPU):控制 + 计算内存:临时存储运行时的数据。输入设备:向计算机输入数据(键盘、鼠标、扫码枪)输出设备:将计算机数据进行输出(显示器、打印机)

2503_90472417的博客 1141

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C 语言:20250708笔记

内容围绕 C 语言展开,涵盖多方面知识。先介绍计算机基础,包括组成(六大部件)、工作原理及语法。C 语言方面,提及起源与标准确立,因 Linux 系统用其开发,故嵌入式开发需掌握。其开发有编辑、编译、运行三步骤,编译又分预处理、编译、汇编、链接四步,还给出各步骤命令与文件类型。同时展示了 C 语言程序结构示例,强调 main 函数是入口且一个.c 文件仅一个。编程规范上,对代码格式、变量命名等有要求。此外,说明程序设计特点,如一行可多语句、一语句可多行等

飞机🛩️飞机Rch-Rich 1317

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C语言基础

需要借助预处理指令: #define。

wy_yy047的博客 1112

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

嵌入式开发学习(第二阶段 C语言基础)

内容提要:C语言概念、数据类型

qq_58814618的博客 1184

C语言:第1天笔记

数据类型其实就是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和操作数据。

2501_92706622的博客 1093

关于C程序注释规范V1

关于C程序注释规范作者:@LLL2018-5-30    同一项目开发中,尽量保持代码注释规范和统一。  注释方便了代码的阅读和维护。  边写代码边注释, 修改代码时要相应修改注释, 保证注释和代码的一致性。  注释要简洁明确,不要出现形容词。  对于写的好的注释,我们将是第一个受益者。  项目开发中,通过注释可以快速知道他人所写函数的功能,返回值,参数的使用。一:头文件(.h)1头文件描述/*@...

lll0408lll的博客 904

C每日一读(一)

1.文件结构:/* Copyright (c) 2002 北京UBI公司 * All rights reserved * * 文件名称:lud.c * 摘 要:处理字符串 * 版 本:2.1 *作 者:ludejun *完成日期:2002/01/01 * *取代版本:2.0 *原 作:lud98 *原作日期:2001/11/11 */

独孤剑的专栏 892

c语言程序书写时,C语言基础第一天-书写规范;开发步骤;变量

1. C语言书写规范:关键字是C语言中具有特殊意义的单词,全部小写一行内尽量放置一条语言,超长的语句可以放在多行内在合适的地方使用空格提高可读性被同一个大括号包含的语句要左对齐,被不同大括号包含的语句要用缩进区分开联系不紧密的语句之间可以使用空行隔开标识符尽量用英文写,多个单词可以采用驼峰方式或下划线方式进行区分C语言常用编译工具:GNU Compiler Collection(gcc)MinGW...

weixin_42223120的博客 422
上一篇: 帮你免于失业的十大软件技术
下一篇: 伪造IP包,禁止TCP连接
peterxin
博客等级 码龄22年 7粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值