版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c语言代码书写标准篇一:关于C语言编程书写标准的规那么和建议关于C语言编程书写标准的规那么和建议一、 头文件1、头文件开头处的版权和版本声明.2、预处理块.3、函数和类结构声明等.?头文件由三局部内容组成:?【规那么】为了预防头文件被重复引用,应当用ifndef/define/endif结构产生预处理块.?【规那么】用#include 格式来引用标准库的头文件编译器将从标准库目录开始搜索 ?【规那么】用#include格式来引用非标准库的头文件编译器将从用户的工作目录开始搜索?【建议】头文件中只存放“声明而不存放“定义?【建议】不提倡使用全局变量,尽量不要在头文件 中由现象 extern in
2、t value这类声明.二、程序的版式空行?【规那么】在每个类声明之后、每个函数定义结束之后都要加空行?【规那么】在一个函数体内,逻揖上密切相关的语句 之间不加空行,其它地方应加空行分隔.代码行?【规那么】一行代码只做一件事情,如只定义一个变 量,或只写一条语句.这样的代码容易阅读,并且方便于写 注释.?【规那么】if、for、while、do等语句自占一行, 执行语句不得紧跟其后.不管执行语句有多少都要加 o这样可以预防书写失误.?【建议】尽可能在定义变量的同时初始化该变量就近原那么代码行内的空格?【规那么】关键字之后要留空格. 象const、virtual 、 inline 、case等关
3、键字之后至少要留一个空格,否那么无法 辨析关键字.象if、for、while等关键字之后应留一个空 格再跟左括号,以突生关键字.?【规那么】函数名之后不要留空格,紧跟左括号,以与关键字区别.?【规那么】向后紧跟,、,、;向前紧跟, 紧跟处不留空格.?【规那么】之后要留空格,如Functionx, y, z. 如果;不是一行的结束符号,其后要留空格.?【规那么】赋值操作符、比拟操作符、算术操作符、 逻辑操作符、位域操作符,如“="、"+= >=、?【规那么】一元操作符如“ !、“、“+、“-"、“&地址运算 符等前后不加空格.?【规那么】象“口、.、“
4、->这类操作符前后不加 空格.?【建议】对于表达式比拟长的for语句和if语句,为了紧凑可以适当地去掉一些空格,如for i=0; i?【规那么】程序的分界符和''应独占一行并且位于同 一列,同时与引用它们的语句左对齐.?【规那么】 之内的代码块在'右边数格处左对 齐.长行拆分?【规那么】代码行最大长度宜限制在 70至80个字符 以内.代码行不要过长,否那么眼睛看不过来,也不便于打印. 【规那么】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首以便突生操作符.拆分生的新行要进行适当的缩进,使排版整洁,语句可读.注释?注释符为" /*?*/ &q
5、uot;.C+钠言中,程序块的注释常采 用“/*?*/工 行注释一般采用“ /? .注释通常用于:版本、版权声明;函数接口说明;重要的代码行或段落提示.?【规那么】注释是对代码的“提示,而不是文档.程 序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱.注 释的把戏要少.?【规那么】如果代码本来就是清楚的,那么 不必加注释.否那么多此一举,令人厌烦.例如 i+; / i 加1 ,多余的注释?【规那么】边写代码边注释,修改代码同时修改相应 的注释,以保证注释与代码的一致性.不再有用的注释要删 除.?【规那么】注释应当准确、易懂,预防注释有二义性. 错误的注释不但无益反而有害.?【规那么】尽量预防在
6、注释中使用缩写,特别是不常 用缩写.?【规那么】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方.?【规那么】当代码比拟长,特别是有多重嵌套时,应 当在一些段落的结束处加注释,便于阅读.三、命名规那么共性规那么?【规那么】标识符应当直观且可以拼读,可望文知意,不必进行“解码.?标识符最好采用英文单词或其组合,便于记忆和阅 读.切忌使用汉语拼音来命名.程序中的英文单词一般不会 太复杂,用词应当准确.例如不要把Currentvalue 写成NowValue.?【规那么】标识符的长度应当符合“ min-length && max-information 原贝U.
7、?【规那么】命名规那么尽量与所采用的操作系统或开发 工具的风格保持一致.例如Windows应用程序的标识符通常采用“大小写 混排的方式,如 AddChild.而Unix应用程序的标识符通常 采用“小写加下划线的方式,如 add_child o别把这两类 风格混在一起用.?【规那么】程序中不要由现仅靠大小写区分的相似的标识符?【规那么】程序中不要由现标识符完全相同的局部变 量和全局变量,尽管两者的作用域不同而不会发生语法错误, 但会使人误解.?【规那么】变量的名字应当使用“名词 或者“形容词+名词.?【规那么】全局函数的名字应当使用“动词或者“动 词+名词动宾词组.类的成员函数应当只使用 “动词
8、, 被省略掉的名词就是对象本身.?【规那么】用正确的反义词组命名具有互斥意义的变 量或相反动作的函数等.?【建议】尽量预防名字中由现数字编号,如 Value1,Value2 等,除非逻辑上确实需要编号.这是为了防 止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字 由于用数字编号最省事.简单的Windows应用程序命名规那么?【规那么】类名和函数名用大写字母开头的单词组合 而成.?【规那么】变量和参数用小写字母开头的单词组合而 成.?【规那么】常量全用大写的字母, 用下划线分割单词.?【规那么】静态变量加前缀 s_ 表示static .?【规那么】如果不得已需要全局变量,那么使全局变量 加前
9、缀g_ 表示global .?【规那么】类的数据成员加前缀m_ 表示member,这样可以预防数据成员与成员函数的参数同名.?【规那么】为了预防莫一软件库中的一些标识符和其 它软件库中的冲突,可以为各种标识符加上能反映软件性质 的前缀.例如三维图形标准 OpenGL的所有库函数均以gl开 头,所有常量或宏定义均以GL开头.表达式和根本语句?规那么】如果代码行中的运算符比拟多,用括号确定 表达式的操作顺序,预防使用默认的优先级.复合表达式?【规那么】不要编写太复杂的复合表达式.?【规那么】不要有多用途的复合表达式.?【规那么】不要把程序中的复合表达式与“真正的数 学表达式混淆.if 语句?布尔变
10、量与零值比拟【规那么】不可将布尔变量直接与 TRUE FALSER者1、0进行比拟. 【规那么】应当将整型变量用“="或"!= 直接与0比拟.【规那么】不可将浮点变量用“二="或"!= 与任何数字比拟. 【规那么】应当将指针变量用“二=或"! ="与NULL比拟.?整型变量与零值比拟 ? 浮点变量与 零值比拟?指针变量与零值比拟?有时候我们可能会看到if (NULL = p)这样乖僻的格式.不是程序写错了,是程序员为了预防将 if (p = NULL)误写成if (p = NULL) ,而有意把 p和NULL颠倒. 编译器认为if (
11、p = NULL)是合法的,但是会指由if (NULL =p)是错误的,由于NULL不能被赋值.循环语句的效率?【建议】在多重循环中,如果有可能,应当将最长 的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数.?【建议】如果循环体内存在逻辑判断, 并且循环次数很大,宜将逻辑判断移到循环体的外面.for语句的循环限制变量?【规那么】不可在for循环体内修改循环变量,预防 for循环失去限制.?【建议】建议for语句的循环限制变量的取值采用“半开半闭区间写法.四、函数设计参数的规那么?【规那么】参数的书写要完整,不要贪图省事只写参 数的类型而省略参数名字.如果函数没有参数,那么用
12、 void 填充.?【规那么】参数命名要恰当,顺序要合理.?【规那么】如果参数是指针,且仅作输入用,那么应在 类型前加const ,以预防该指针在函数体内被意外修改.?【规那么】如果输入参数以值传递的方式传递对象, 那么宜改用“ const & 方式来传递,这样可以省去临时对象 的构造和析构过程,从而提升效率.?【建议】预防函数有太多的参数,参数个数尽量控 制在5个以内.如果参数太多,在使用时容易将参数类型或 顺序搞错.?【建议】尽量不要使用类型和数目不确定的 参数.返回值的规那么?【规那么】不要省略返回值的类型.?【规那么】函数名字与返回值类型在语义上不可冲突.?【规那么】不要将正常
13、值和错误标志混在一起返回.正常值用输由参数获得,而错误标志用return语句返回?【建议】有时候函数原本不需要返回值,但为了增 加灵活性如支持链式表达,可以附加返回值.?【建议】如果函数的返回值是一个对象,有些场合 用“引用传递替换“值传递可以提升效率.而有些场合 只能用“值传递而不能用“引用传递 ,否那么会由错.函数内部实现的规那么?【规那么】在函数体的“入口处,对参数的有效性进 行检查.?【规那么】在函数体的“由口处,对return 语句的正确性和效率进行检查.其它建议?【建议】函数的功能要单一,不要设计多用途的函 数.?【建议】函数体的规模要小,尽量限制在50行代码之内.?【建议】尽量预
14、防函数带有“记忆功能.相同的 输入应当产生相同的输由. 建议尽量少用static 局部变量,除非必需.?【建议】不仅要检查输入参数的有效性,还 要检查通过其它途径进入函数体内的变量的有效性,例如全 局变量、文件句柄等.?【建议】用于由错处理的返回值一定要清楚,让使用者不容易无视或误解错误情况.五、内存治理内存分配方式?内存分配方式有三种:从静态存储区域分配.内存在程序编译的时候就已经 分配好,这块内存在程序的整个运行期间都存在.例如全局 变量,static 变量. 在栈上创立.在执行函数时,函数内 局部变量的存储单元都可以在栈上创立,函数执行结束时这 些存储单元自动被释放.栈内存分配运算内置于
15、处理器的指 令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态内存分配.程序在运行的时候 用malloc或new申请任意多少的内存,程序员自己负责在 何时用free或delete释放内存.动态内存的生存期由我们 决定,使用非常灵活,但问题也最多.常见的内存错误及其对策?内存分配未成功,却使用了它.常用解决方法是,在使用内存之前检查指针是否为NULL?内存分配虽然成功,但是尚未初始化就引用它.两 个起因:一是没有初始化的观念;二是误以为内存的缺省初 值全为零.?内存分配成功并且已经初始化,但操作越过 了内存的边界.?忘记了释放内存,造成内存泄露.?释放了内存却继续使用它.有三种情况:
16、?程序中的对象调用关系过于复杂,实在难以搞清楚 莫个对象究竟是否已经释放了内存,此时应该重新设计数据 结构,从根本上解决对象治理的混乱局面.?函数的return语句写错了,注意不要返回指向“栈 内存的“指针或者“引用,由于该内存在函数体结束 时被自动销毁.?使用free或delete释放了内存后,没 有将指针设置为 NULL导致产生“野指针.【规那么】用 malloc或new申请内存之后,应该立即 检查指针值是否为 NULL预防使用指针值为 NULL的内存.【规那么】不要忘记为数组和动态内存赋初值.预防将未被初 始化的内存作为右值使用.【规那么】预防数组或指针的下标越界,特别要留神发生“多 1
17、或者“少1操作. 【规那么】动态内存的申请与释放必须配对,预防内存泄漏.【规那么】用free或delete释放了内存之后,立即将指针设置为 NULL预防产生“野指针 o杜绝“野指针指针变量没有被初始化.任何指针变量刚被创立时不会自动成为NULL指针,它的缺省值是随机的, 指针p被free或者delete之后,没有置为 NULL, 让人误以为p是个合法的指针.指针操作超越了变量的作用范围.指针消亡了,并不表示它所指的内存会被自动释放.内存被释放了,并不表示指针会消亡或者成了NULL指针.六、一些编程经验?越是怕指针,就越要使用指针.不会正确使用指针, 肯定算不上是合格的程序员.?必须养成“使用调
18、试器逐步跟踪程序的习惯,只 有这样才能发现问题的本质使用const提升函数的健壮性提升程序的效率?程序的时间效率是指运行速度,空间效率是指程序 占用内存或者外存的状况.?全局效率是指站在整个系统的角度上考虑的效率,局部效率是指站在模块或函数角度上考虑的效率.?【规那么】不要一味地追求程序的效率,应当在满足 正确性、可靠性、健壮性、可读性等质量因素的前提下,设 法提升程序的效率. ?【规那么】以提升程序的全局效率为 主,提升局部效率为辅.?【规那么】在优化程序的效率时,应领先找由限制效 率的“瓶颈,不要在无关紧要之处优化.?【规那么】先优化数据结构和算法, 再优化执行代码.?【规那么】有时候时间
19、效率和空间效率可能对立,此 时应当分析那个更重要,作由适当的折衷.例如多花费一些 内存来提升性能. ?【规那么】不要追求紧凑的代码,由于 紧凑的代码并不能产生高效的机器码.一些有益的建议?【建议】留神那些视觉上不易分辨的操作符发生书 写错误.我们经常会把“=误写成“=",象|"&&'、“二这类符号也很容易发生“丢 1失误.然而编译器却不 一定能自动指由这类错误.?【建议】变量指针、数组被创立之后应当及时把它们初始化,以预防把未被初始化的变量当成右值使用?【建议】留神变量的初值、缺省值错误,或者精度不够.?【建议】留神数据类型转换发生错误.尽量使用显
20、式的数据类型转换让人们知道发生了什么事,预防让编译器轻悄悄地进行隐式的数据类型转换.?【建议】留神变量发生上溢或下溢,数组的下标越 界.?【建议】留神忘记编写错误处理程序,留神错误处 理程序本身有误.?【建议】留神文件I/O有错误.?【建议】预防编写技巧性很高代码.?【建议】不要设计面面俱到、 非常灵活的数据结构.?【建议】如果原有的代码质量比拟好, 尽量复用它. 但是不要修补很差劲的代码,应当重新编写.?【建议】尽量使用标准库函数,不要“创造已经 存在的库函数.?【建议】尽量不要使用与具体硬件或软件环境关系 密切的变量.?【建议】把编译器的选择项设置为最严格状态.篇二:C语言编写标准之注释1
21、、头文件包含Includes2、私有类型定义 Private typedef3、私有定义 Private define4、私有宏定义 Private macro5、私有变量 Private variables6、私有函数原型 Private function prototypes7、私有函数 Private functions8、私有函数前注释1m* * Function Name : FSMC_NOR_Init* Description : Configures the FSMC and GPIOs to interface with the NOR memory. *This functi
22、on must be called before any write/read operation* on the NOR.* Input : None* Output: None* Return: None*/9、程序块采用缩进风格编写,缩进空格为4.10、相对独立的程序块之间、变量说明之后必须加空行;11、较长的字符80字符要分成多行书写,长表达 式要在低优先级操作符划分新行,操作符放在新行之首,新 行要恰当缩进,保持排版整洁;12、循环、判断等语句中假设有较长的表达式或语句, 那么要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首;13、假设函数或过程中的参数较长
23、,那么要进行适当的划 分.14、不允许把多个短语句写在一行中,即一行只写一 条语句.15、if 、for、do、while 、case、switch 、default 等语句自占一行,且if、for、do、while等语句的执行语句局部无论多少都要加括号().16、对齐只使用空格键,不使用TAB键;17、函数或过程的开始、结构的定义及循环、判断等语句 中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求18、程序块的分界符(如C/C+语言的大括号??和??)应 各独占一行并且位于同一歹L同时与引用它们的语句左对齐.在函数体的开始、类的定义、结构的定义、枚举的定义以及 if
24、、for、do、while、switch、case 语句中的程序 都要采用如上的缩进方式.19、在两个以上的关键字、变量、常量进行对等操作时, 它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符如一 ,后不应加空格;20、一行程序以小于80字符为宜,不要写得过长.21、一般情况下,源程序有效注释量必须在 20 %以上.注释不宜太多、不宜太少,准确易懂简洁;22、说明性文件如头文件.h文件、.inc文件、.def文件、 编译说明文件.cfg等头部应进行注释,注释必须列由:版权说明、版本号、生成 日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能 简要说明.23、源文件头部应进行注释,列由:版权说明、版本号、 生成日期、作者、模块目的/功能、主要函数及其功能、修 改日志等.如:24、函数头部应进行注释,列由:函数的目的 /功能、输入 参数、输由参数、返回值、调用 关系函数、表等.25、边写代码边注释,修改代码同时修改相应的注释,以 保证注释与代码的一致
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025高考数学考二轮专题过关检测5 统计与概率数-专项训练【含答案】
- 机械工程中的机械表面处理规范要求
- 民主生活会征求意见表
- 关于质量、工期、服务等方面的承诺及合理化建议
- 二零二五年度高铁站灯箱广告经营权竞拍合同3篇
- 二零二五年度股权众筹项目分配协议书范本3篇
- 2024年清远职业技术学院高职单招职业适应性测试历年参考题库含答案解析
- 2024年海南软件职业技术学院高职单招职业适应性测试历年参考题库含答案解析
- 语文S版六下《鲧禹治水》课件知识分享
- 资产监督检查研究报告
- GB/T 3077-2015合金结构钢
- GB/T 25003-2010VHF/UHF频段无线电监测站电磁环境保护要求和测试方法
- CB/T 369-1995钢索开口滑车
- 英语音标及辨音练习(精选)课件
- 小英雄雨来-读后感700字
- 沟槽挖土方计算公式
- A320系列飞行训练课程:无线电导航概述
- 呼吸机波形分析以及临床应用
- 市政工程监理规划范本(完整版)
- 强力夯实加固地基质量通病防治
- 《流体力学》课件
评论
0/150
提交评论