高质量的C/C++编程(2)----程序员必看系列
目录
前言
第二章
2.1 空行
2.2 代码行
2.3 代码行内的空格
2.4 对齐
2.5 长行拆分
2.6 修饰符的位置
2.7 注释
前言
首先声明,文章内容并非原创,而是从林锐博士所著的《高质量的C/C++编程》书籍摘要总结并加上了一部分我自己的理解而来,从中截取了一些我们在C语言中常用到的一些规则,一些内容我们在初始阶段用不到,所以对其进行了删减,主要是为了减轻大家的阅读负担,这个系列就是为了帮助大家写出规范、美观的代码,下面正文内容即将开始!
在开始正文之前,先告诉大家一个快捷键,ctrl + k + f代码自动对齐!!!
第二章
2.1 空行
空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加 清晰。空行不会浪费内存,反而会使代码具有更好的可读性,层次更加分明,程序更加美观。
规则2.1.1 在每个类声明之后、每个函数定义结束之后都要加空行。
规则2.1.2 在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应 加空行分隔。
示例:
函数之间的空行 // 空行 void Function1(…) { … } // 空行 void Function2(…) { … } // 空行 void Function3(…) { … }
函数内部之间的空行 // 空行 while (condition) { statement1; // 空行if (condition) { statement2; } else { statement3; } // 空行statement4; }
2.2 代码行
规则2.2.1 一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样 的代码容易阅读,并且方便于写注释。
规则 2-2-2 if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。(我们可能一开始只想在条件后面执行一条语句,但后来想在原来的基础上再加一条或多条语句,此时容易忘记加{})
示例:
int width; // 宽度 int height; // 高度 int depth; // 深度x = a + b; y = c + d; z = e + f;if (width < height) { dosomething(); }for (initialization; condition; update) { dosomething(); } // 空行 other();
建议2.2.1 尽可能在定义变量的同时初始化该变量(就近原则)
如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用 了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。另一个原因就是我们初始化的变量在后续进行条件判断时可能会具有某些意义。
示例:
int width = 10; // 定义并初绐化 width int height = 10; // 定义并初绐化 height int depth = 10; // 定义并初绐化 depth
2.3 代码行内的空格
规则2.3.1 关键字之后要留空格。像const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析关键字。像 if、for、while 等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
规则2.3.2 函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。
规则2.3.3 ‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。(向后紧跟即后面不留空格,向前紧跟即前面不留空格)
规则2.3.4 ‘,’之后要留空格,如 Function(x, y, z)。如果‘;’不是一行的结束 符号,其后要留空格,如 for (initialization; condition; update)。
规则2.3.5 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符, 如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二 元操作符的前后应当加空格。
规则2.3.6 一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格。
规则2.3.7 像“[]”、“.”、“->”这类操作符前后不加空格。
建议2.3.1 对于表达式比较长的 for 语句和 if 语句,为了紧凑起见可以适当地去掉一些空格,如 for (i=0; i<10; i++)和 if ((a<=b) && (c<=d))。
示例:
const int a = 7;if (year >= 2000) for (i=0; i<10; i++) x = a < b ? a : b; int *x = &y; array[5] = 0;a.Function(); b->Function();
2.4 对齐
规则2.4.1 程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用 它们的语句左对齐。
规则2.4.2 { }之内的代码块在‘{’右边数格处左对齐。
示例:
void Function(int x) { … // program code }if (condition) { … // program code } else { … // program code }for (initialization; condition; update) { … // program code }While (condition) { … // program code }如果出现嵌套的{},则使用缩进对齐,如:{ … { … } … }
2.5 长行拆分
规则2.5.1 代码行最大长度宜控制在 70 至 80 个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。此处给大家补充一下续行符的使用:在语句想要续行的位置使用\,在下一行继续写连接上一行的代码即可。
示例:
规则2.5.2 长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。
示例:
if ((very_longer_variable1 >= very_longer_variable12) && (very_longer_variable3 <= very_longer_variable14) && (very_longer_variable5 <= very_longer_variable16)) { dosomething(); }virtual CMatrix CMultiplyMatrix (CMatrix leftMatrix, CMatrix rightMatrix);for (very_longer_initialization; very_longer_condition; very_longer_update) { dosomething(); }
2.6 修饰符的位置
修饰符 * 和 & 应该靠近数据类型还是该靠近变量名,是个有争议的活题。
若将修饰符 * 靠近数据类型,例如:
int* x;
从语义上讲此写法比较直观,即 x 是 int 类型的指针。
上述写法的弊端是容易引起误解,例如:int* x, y; 此处 y 容易被误解为指针变 量。虽然将 x 和 y 分行定义可以避免误解,但并不是人人都愿意这样做。
规则2.6.1 应当将修饰符 * 和 & 紧靠变量名。
例如: char *name; int *x, y; // 此处 y 不会被误解为指针(当然这种定义变量的方法我们并不推荐大家使用)
2.7 注释
C 语言的注释符为“/*…*/”。C++语言中,程序块的注释常采用“/*…*/”,行注释 一般采用“//…”。
注释通常用于:
(1)版本、版权声明;
(2)函数接口说明;
(3)重要的代码行或段落提示。
虽然注释有助于理解代码,但注意不可过多地使用注释。
规则2.7.1 注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主, 注释太多了会让人眼花缭乱。注释的花样要少。
规则2.7.2 如果代码本来就是清楚的,则不必加注释。
例如 i++; // i 加 1,多余的注释
规则2.7.3 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码 的一致性。不再有用的注释要删除。
规则2.7.4 注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。
规则2.7.5 尽量避免在注释中使用缩写,特别是不常用缩写。
规则2.7.6 注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。
规则2.7.8 当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。
高质量的C/C++编程(2)----程序员必看系列相关推荐
- 如何理解高内聚低耦合?Java/Android 程序员必看的知识
推荐阅读: Android MVC设计模式详解 Android 框架MVVM详解 Android MVC设计模式详解 Java/Android 常见的设计模式总结,提高代码重用性和扩展下 概念 耦合性 ...
- 互联网最新报告出炉!程序员必看系列!
近期,CNNIC发布第50次<中国互联网络发展状况统计报告>,报告显示:截至2022年6月,①我国网民规模为10.51亿:②我国网民人均周上网29.5小时:③我国短视频用户规模达9.62亿 ...
- 程序员必看的书籍推荐
程序员必看的书籍推荐: 推荐1:Python 网络数据采集 作者:Ryan Mitchell 译者:陶俊杰,陈小莉 原书4.6星好评,一本书搞定数据采集 涵盖数据抓取.数据挖掘和数据分析 提供详细代码 ...
- 程序员必看,学习的方法
程序员必看,学习的方法 0.引言 在学习编程语言的路上,发现初学者(包括俺)问 得最多的问题莫过于"如何学习编程?Java该如何学习?".类似的问题回答多了,难免会感觉厌烦,就萌生 ...
- java书籍_Java程序员必看的 13 本 Java 书籍!
原文:Java程序员必看的 13 本 Java 书籍! 作者: java技术栈 关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,J ...
- java架构师之路:JAVA程序员必看的15本书的电子版下载地址
java架构师之路:JAVA程序员必看的15本书的电子版下载地址 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一 ...
- JAVA程序员必看的15本书
java架构师之路:JAVA程序员必看的15本书的电子版下载地址 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一 ...
- Java程序员必看的15本书的电子版下载地址
Java程序员必看的15本书的电子版下载地址 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺 ...
- java程序员必看书籍
学习Java最痛苦的事情莫过于对未来职业方向的选择.尤其是选择开发Java Application还是Java Web方向,在你先定好大类后还有数不尽的小类教你无从学起. 因此,作为初学者的你必须看完 ...
- 收藏|Java程序员必看的几本基础书籍和常用工具
java程序员必看基础书籍和工具 1计算机基础 1.<深入理解计算机系统> 著名的CSAPP,从c语言到汇编语言到硬件再到操作系统,写得非常好.是一本能帮助深入理解计算机系统的书.基本上把 ...
最新文章
- Linux用户态和内核态
- 【Android开发】范例1-实现带描边的圆角图片
- j2ee gradle构建
- VS2008 fatal error LNK1000: Internal error during IncrBuildImage 解决方案
- Python IDLE入门
- 【CodeForces - 1042A】Benches (优先队列,思维模拟,maxmin问题)
- Arrays类详细讲解
- Java对象转出json并过滤指定属性
- 【java】java 局部变量表中的槽是可以重用的
- 偷的名表卖掉能查到吗_搬运工偷走房主30万名表,转手以12.5万卖掉 南京警方快速追回...
- PHP 图片上传类 缩略图
- 操作系统概念第三章部分作业题答案
- Invest授粉模型问题求助
- 游戏音效未来之路该如何发展
- dell 恢复介质_安装DELL原装windows系统,使用 USB 恢复介质来安装 Microsoft Windows
- 【日语】英语26个字母的日语读法
- x64dbg 自带脚本系统
- 利用apktool查看apk源代码
- RH236介绍红帽GLUSTER存储
- 头条搜索官网认证说明