伪代码书写规范_C++代码书写规范(推荐新手程序员)

ab1e22b48a1b0970dee1782e9e3c82e7.png

代码就是程序员的面子,无论是在工作中在电脑上写程序代码还是在面试时在纸上写演示代码我们都希望写出整洁,优雅的代码。特别在工作中当我们碰到需要维护别人的代码,或者是多人参与一个项目大家一起写代码的时候,如果碰到一些丑陋的代码,我们还要看懂并且修改它的时候,那种难受,肯定会让我们回想起多年以前自己还是新手程序员的时候,写下的那些丑陋的代码,并且深深内疚于将它们留给了我们的后继者,不知道他们和它们是否还安好。所以,强调代码的规范性,写出整洁,优雅,可读性高的代码应该是成为一个合格的程序员的第一步。这里我就抛砖引玉,给大家一些关于C++代码规范性的一些建议。

一、关于添加空格和空行的一些建议

写代码的时候添加良好风格的空格和空行可以使代码看上去更整洁,布局更清晰。

1.空格

· 建议一:函数名之后不要留空格,紧跟左括号‘ (’,以与关键字区别。

· 建议二:象 if for、 **while **等关键字之后应留一个空格再跟左括号‘ (’,以突出关键字。

· 建议三:‘,’之后要留空格。在for语句中的‘;’其后要留空格,如 for (i=0; i<5; i++)。

· 建议四:对于表达式比较长的 **for **语句和 **if **语句,为了紧凑起见可以适当地去掉一些空格。

· 建议五:赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ =”、“ +=” “>=”、“ <=”、“ +”、“ *”、“ %”、“ &&”、“ <

  • 建议六:一元操作符如“ !”、“ ~”、“ ++”、“ --”、“ &”(地址运算符)等前后不加空格。

下面这段代码就会显得不优雅,看着有些别扭。

//不好的风格void func (int a,int b,int c,int d){ if(a>=0) { if(a>=b&&c>=d) { int * x = & a;  ...//doSomeThing(); } }}

我们希望将它改为这样。

//良好的风格void func(int a, int b, int c, int d)//建议一,建议三{ if (a >= 0)//建议二,建议五 { if ((a>=b) && (c>=d))//建议四 { int *x = &a; //建议六 ...//doSomeThing(); } }}

还有这样的for语句for (i = 0; i < 5; i ++),就属于空格滥用了,应该改为for (i=0; i<5; i++)。

2.空行

  • 建议一:在实现函数时,函数与函数之间应加空行。
  • 建议二:在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行。

当程序中没有空行时是这样的。

void func1(){ while (condition) { ...//doSomeThing(); if (condition) { ...//doSomeThingRelated(); } else { ...//doSomeThingRelated(); } ...//doSomeThing(); }}void func2(){ ...//doSomeThing();}

而良好的空行不紧能使代码看上去更整洁,代码逻辑也会更清晰。

//良好的风格void func1(){ while (condition) { ...//doSomeThing(); if (condition) { ...//doSomeThingRelated(); } else { ...//doSomeThingRelated(); } ...//doSomeThing(); }}void func2(){ ...//doSomeThing();}

二、关于代码行格式的一些建议

· 建议一:一行代码只做一件事情。

· 建议二:长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首 (以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

//不好的风格void func(){ int veryVeryLongWidth, veryVeryLongHeight; if ((veryVeryLongWidth > veryVeryLongHeight) || (veryVeryLongWidth < veryVeryLongHeight))doSomeThing();}

过长的代码行无论是书写还是阅读对人来说都不是一个美好的体验,所以我们建议以上代码要这样写。

//良好的风格void func(){ int veryVeryLongWidth;  int veryVeryLongHeight; if ((veryVeryLongWidth > veryVeryLongHeight) || (veryVeryLongWidth < veryVeryLongHeight)) { doSomeThing(); }}
0b48eb0916a5165fecbea939eac7ad52.png

三、关于命名的一些建议

· 建议一:变量,函数,文件命名应该具有描述性,最好采用英文单词或其组合(不要使用拼音,或者无意义的abc之类的,除了像for (i=0; i<5; i++)中的i这样的),以便记忆和阅读。

· 建议二:类名和函数名用大写字母开头的单词组合而成。

例如:

class Book; class ReadBook; void Draw(); void DrawImage();

· 建议三:变量和参数用小写字母开头的单词组合而成。

例如:

int value;void SetValueMode(int valueMode);

· 建议四:常量全用大写的字母,用下划线分割单词。

例如:

const int MAX = 100;const int MAX_LENGTH = 100;

· 建议五:全局变量加前缀 g_(表示 global)。静态变量加前缀 s_(表示 static)。类的成员变量加前缀 m_(表示 member)。

例如:

int g_maxValue;static int s_maxValue; void Object::SetValue(int maxValue){ m_maxValue = maxValue;}

四、关于添加注释的一些建议

在C++中注释主要有两种,程序块的注释常采用“ /*…*/”,行注释一般采用“ //…”。注释主要用在3个地方。1、版权申明,2、函数说明,3、重要或复杂代码提示。对于前两种,每个人或者每个公司都有个人的规范和习惯,这里只要大家在公司内部统一即可。关于第三种给重要或复杂代码添加提示,我们有一下几点建议。

· 建议一:注释的确很重要,但是最好的代码本身就是文档(self-document),类型和变量命名意义明确要比通过注释解释模糊命名好得多

· 建议二:边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要记得删除。

· 建议三:注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。

五、关于类中成员声明次序的一些建议

  • 建议一:在类中按照public:、protect:、private:的次序声明。如果那一块没有直接忽略。
  • 建议二:在同一块中按照1、结构体和枚举,2、常量,3、构造函数,4、析构函数,5、成员函数,6、成员变量的次序声明。

六、关于if语句中的变量“与零值比较”的一些建议

  • 建议一:不可将布尔变量直接与 TRUE、 **FALSE **或者 1、 **0 **进行比较。

假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:

if (flag) // 表示 flag 为真if (!flag) // 表示 flag 为假
  • 建议二:应当将整型变量用“ ==”或“!=”直接与 0 比较。
  • 假设整型变量的名字为 value,它与零值比较的标准 if 语句如下:
if (value == 0)if (value != 0)

也可以将0放在比较运算符前面。

if (0 == value)if (0 != value)

这时如果将“==”写成“=”,编译器会报错。

· 建议三:不可将浮点变量用“ ==”或“!=”与任何数字比较。无论是 float 还是 double 类型的变量,都有精度限制。所以一定要避免将浮点变量用“ ==”或“!=”与数字比较,应该设法转化成“ >=”或“ <=”形式。

假设浮点变量的名字为 x,应当将

if (x == 0.0) // 隐含错误的比较

修改为

const float EPSINON = 0.00001;if ((x>=-EPSINON) && (x<=EPSINON))

其中 EPSINON 是允许的误差(即精度)。

· 建议四:应当将指针变量用“ ==”或“! =”与** NULL **比较。

假设指针变量的名字为 p,它与零值比较的标准 if 语句如下:

if (p == NULL) // p 与 NULL 显式比较,强调 p 是指针变量if (p != NULL)
25ab02304723d7c8b5f397d35f7aa569.png

有什么好的想法,欢迎评论。 喜欢的关注收藏哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础17:Java IO流总结

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/80201802 这位大侠&#xff0c;这是我的公众号&#xff1a;程序员江湖。 分享程序员面试与技术的那些事。 干货满满&#xff0c;关注就送。 本文介…

html语言闪烁特效代码,css3 文字闪烁特效代码

今天给大家分享几个文字闪烁特效代码&#xff0c;纯css3代码实现&#xff0c;对于新手小伙伴值得拿来学习一下。文字闪烁特效一通过改变透明度来实现文字的渐变闪烁&#xff0c;代码如下&#xff1a;文字闪烁&#xff1a;闪烁效果.main{color: #666;margin-top: 50px;}/* 定义k…

2021年山西副高考试成绩查询,中国卫生人才网2021年山西卫生资格考试成绩查询...

2021年山西卫生资格考试成绩查询 由中国卫生人才网考试快讯提供&#xff0c;以及提供2021国家卫生资格成绩查询考试信息。更多关于2021年山西卫生资格考试成绩查询 ,卫生资格考试,2021卫生资格考试,卫生资格成绩快讯的内容&#xff0c;请关注国家卫生资格考试网&#xff01;!20…

团队项目作业1-团队展示与选题

团队展示&#xff1a; 队名&#xff1a;summer 团队项目描述&#xff1a;基于java 、web的四则运算网站的开发&#xff0c;有三种角色&#xff1a;老师、家长、学生。老师在网站上发布四则运算作业&#xff0c;可以设置题目数量&#xff0c;数值范围、以及完成作业限定的时间。…

SP2-0734: 未知的命令开头 imp scott/... - 忽略了剩余的行。

原文地址&#xff1a;http://blog.csdn.net/yangwenxue_admin/article/details/47667943 Oracle数据导入报错&#xff1a;SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。 原因&#xff1a;进入sqlplus里是不能执行imp的(sqlplus不认识imp)&#xff0c…

impdp导入dmp文件

impdp命令在cmd下直接用&#xff0c;不必登录oracle。只能导入expdp导出的dmp文件。 expdp导出的时候&#xff0c;需要创建 DIRECTORY 导出什么表空间&#xff0c;导入也要什么表空间。 导出什么用户&#xff0c;导入也要什么用户。 如果没有要新建。 从杭州服务器expdp导出…

高中技校学计算机,我没考上高中,英语数学极差,想上技校学计算机专业,玩代码的那种,有前途吗?...

我没考上高中&#xff0c;英语数学极差&#xff0c;想上技校学计算机专业&#xff0c;玩代码的那种&#xff0c;有前途吗&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;我没考上…

html中函数传递多个值,JavaScript 实战开发经验!函数多参数传参技巧

HTML5学堂-码匠&#xff1a;掌握JavaScript代码的你&#xff0c;一定编写封装过函数&#xff0c;为了提升函数的控制性&#xff0c;必不可少的就是参数&#xff0c;必选可选的一大堆参数罗列出来&#xff0c;函数调用貌似变得麻烦起来~~~Tips&#xff1a;必选参数指的是必须要传…

软件工程学习笔记(考试版)

软 件 工 程 笔 记 第一章 一个软件产品必须由一个完整的配置组成&#xff0c;软件配置主要包括&#xff1a;程序&#xff0c;数据及相关文档。程序是能够完成预定功能和性能的可执行的指令序列&#xff1b;数据是使程序能够适当的处理信息的数据结构&#xff1b;文档是开发使…

印象笔记编辑pdf_笔记软件使用体验(至2020.03)

几年的时间&#xff0c;从OneNote到为知笔记&#xff0c;再到印象笔记&#xff0c;再回到为知笔记和OneNote&#xff0c;用下来感觉各有优势&#xff0c;也有不爽的地方。 早年间OneNote的同步很有问题&#xff0c;一次同步冲突导致失去了几乎所有笔记本。心灰意冷之下就离开了…

C#获取当前程序运行路径的方法集合

2019独角兽企业重金招聘Python工程师标准>>> // 获取当前进程的完整路径&#xff0c;包含文件名(进程名) Console.WriteLine(GetType().Assembly.Location "\tGetType().Assembly.Location"); // 获取新的 Process 组件并将其与当前活动的进程关联的主模…

Hive thrift服务--beeline使用

hive提供了thrift服务&#xff0c;只要客户端符合thrift标准就可以与它对接。 这样可以以在一台服务器上启动一个hive&#xff0c;其他用户通过thrift访问hive。 hive自带了一个thrift的客户端-------bin/beeline 启动方式&#xff1a; 1、hadoop的core-site.xml增加配置 &l…

vfp控制excel使用sort_使用Python根据索引合并Excel表

有两张不同大小的excel表表1&#xff1a;字典的选项值&#xff0c;2118行表2&#xff1a;字典名称&#xff0c;405行表1和表2有共同的列.现在需要根据共同的列&#xff0c;以表1为底&#xff0c;将表2的值对应添加到表1的每一行。下面是代码&#xff1a;1.加载相关的库import n…

Redis详解(三)

一、Redis集群介绍 Clustering:redis 3.0之后进入生产环境分布式数据库&#xff0c;通过分片机制来进行数据分布&#xff0c;clustering 内的每个节点&#xff0c;仅有数据库的一部分数据;去中心化的集群&#xff1a;redis集群中的每一个节点&#xff0c;都可以作为集群的接入节…

win10计算机从桌面消失了,Windows10家庭版程序窗口在桌面上消失了解决方法

相信大家对于电脑非常不陌生吧&#xff0c;当你遇到Win10程序窗口桌面上消失了怎么办这个问题该怎么解决吗&#xff1f;不知道了吧&#xff0c;接下来小编就以程序窗口时所遇到的Win10程序窗口桌面上消失了怎么办问题来给大家讲讲&#xff0c;看看小编是如何帮大家解决Win10程序…

MSSQL-最佳实践-如何监控备份还原进度

title: MSSQL 最佳实践 如何监控备份还原进度 author: 风移 摘要 本期月报是SQL Server备份还原专题分享系列的第六期&#xff0c;打算分享给大家如何监控SQL Server备份还原进度。 场景引入 由于SQL Server备份还原操作是重I/O读写操作&#xff0c;尤其是当数据库或数据库备…

抢车位app下载_太方便了!有了这个APP,找车位再也不用“兜圈子”了

对于不少有车一族来说&#xff0c;决定出门是否开车的重要因素之一&#xff0c;那就是目的地是不是好停车&#xff0c;因为找车位可真是一件很头疼的事&#xff0c;不过未来&#xff0c;满街找停车位的尴尬情况将会越来越少&#xff0c;近日&#xff0c;镇江智慧停车平台正式上…

一共81个,开源大数据处理工具汇总

查询引擎 一、Phoenix 贡献者&#xff1a;&#xff1a;Salesforce 简介&#xff1a;这是一个Java中间层&#xff0c;可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写&#xff0c;代码位于GitHub上&#xff0c;并且提供了一个客户端可嵌入的JDBC驱动。 Phoen…

html5怎么删除样式,css怎么删除一个样式

css删除一个样式的方法&#xff1a;首先创建一个HTML示例文件&#xff1b;然后给div添加css样式&#xff1b;最后通过“removeClass()”方法从被选元素删除一个或多个类即可。本教程操作环境&#xff1a;windows7系统、HTML5&&CSS3版、Dell G3电脑。CSS添加样式、删除样…