伪代码书写规范_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;关注就送。 本文介…

nuxt页面跳转_nuxt 项目如何解决组件复用时页面不刷新的问题

组件复用会在两种情况下发生&#xff1a;1、使用 keep-alive 时&#xff0c;页面再次跳转时&#xff0c;数据不更新每一次路由的切换都会导致页面被重新渲染&#xff0c;无论是各种钩子还是异步获取数据函数都会被执行&#xff0c;为了提高网站性能&#xff0c;可以使用 keep-a…

20.命名规范

所有变量&#xff0c;方法&#xff0c;类名&#xff1a;见名知意 变量&#xff0c;方法名 --首字母小写和驼峰原则。 如&#xff1a;run(),getName() 常量 ---大写字母和下划线&#xff1a;MAX_VALUE 类名 ---首字母大写和驼峰原则。 如&#xff1a;Man,HelloWorld ------…

k8s查看pod的yaml文件_K8s-yaml的使用及命令

YAML配置文件管理对象对象管理&#xff1a;# 创建deployment资源kubectl create-f nginx-deployment.yaml# 查看deploymentkubectl get deploy# 查看ReplicaSetkubectl get rs# 查看pods所有标签kubectl get pods--show-labels# 根据标签查看podskubectl get pods-l appnginx# …

Orange Business Services 全球发布 Easy Go Network,帮助企业加速实现“网络即服务”...

100% 数字化, 软件定义网络( SDN) 产品在 75 个国家上市 在云、移动化、大数据和物联网&#xff08;IoT&#xff09;趋势的推动下&#xff0c;企业不断寻求更加智能和更加灵活的网络&#xff0c;以支持他们的数字化转型方案。而网络只有演进至“网络即服务”&#xff08;NaaS&a…

vue的html自动刷新,Vue页面刷新记住页面状态的实现

环境vue项目&#xff0c;页面有搜索、筛选项等。需求页面跳转&#xff0c;切换或者刷新&#xff0c;希望可以记住用户在页面的筛选状态方案v1vue有提供一种缓存组件的解决方案 — keep-alive。缓存不活动的组件实例&#xff0c;而不是销毁它们。我们可以使用keep-alive包括路由…

python 程序停止打印日志_Python日志打印

简单示例import sysimport ctypesimport loggingimport logging.handlersreload(sys)sys.setdefaultencoding(utf-8)LOG_FILE test_loglogging.basicConfig(filename LOG_FILE,format %(asctime)s - %(levelname)s -%(process)d- %(filename)s:%(funcName)s:%(lineno)d - %(…

21.和和instance of

>> 右移一位。相当于除2 << 左移一位。相当于乘2 public static void main(String[] args) {int a3<<2;int b12>>2;System.out.println("a"a);System.out.println("b"b);}解析&#xff1a; a3*2*212 b12/2/23 运行结果&#xf…

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

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

keyshot怎么贴logo_如何使用KeyShot添加有织纹的Logo

如果你的产品上有企业logo&#xff0c;那么将logo作为一种材质(如镀铬贴纸)就很常见了&#xff0c;但不是在3D里建模logo&#xff0c;建模logo会产生额外的工作&#xff0c;还会降低建模的效率&#xff0c;不过KeyShot提供了一种简单的方法&#xff0c;可以更快地实现相同的效果…

tar解压出错tar: Child returned status 1

一、错误情况 目前我遇到错误情况&#xff1a; 1、压缩文件不是 .tar.gz的文件是.tar文件。使用了 tar -zxvf 命令。 解决方法&#xff1a; 去掉z。 原因&#xff1a; .tar只是将文件打包&#xff0c;文件的大小没什么变化。 .tar.gz是加入了gzip的压缩命令&#xff0c…

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…

datatable中某一列最小值_Asp.net中获取DataTable选择第一行某一列值

数据源是一个DataTable&#xff0c;现在我们需要获取这个DataTable的第一行第一列的值。先准备一个数据集&#xff0c;创建一个DataTable&#xff0c;并填充数据&#xff1a;source code:using System;using System.Collections.Generic;using System.Data;using System.Linq;u…

斯坦福计算机科学教材,斯坦福计算机科学

斯坦福大学称得上是世界上最难进的大学之一&#xff0c;尤其是称之为其王牌专业的计算机科学。竞争压力之大不容置疑&#xff0c;首先要弄明白申请要求是什么。出国留学网本文将为大家介绍斯坦福大学计算机科学专业申请条件&#xff0c;请看。计算机科学专业申请要求听了这么多…

impdp导入dmp文件

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

ArrayList去除集合中字符串的重复值

/* * 需求&#xff1a;ArrayList去除集合中字符串的重复值 * * 分析&#xff1a; * 1.创建一个集合对象 * 2.添加多个字符串元素 * 3.创建一个新的集合 * 4.拿旧集合中的元素到新集合中去找 * A&#xff1a;有则 不要 * B:没有则添加到新集合中 * 5.遍历输出 新集合 */ packa…

silk 编解码_Silk编解码在android实现

Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器。Skype已将其开源&#xff0c;可以访问http://developer.skype.com/silk获取最新动向。SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。支…