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

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

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

1.空格

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

· 建议二:象 iffor、 **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(); }}

三、关于命名的一些建议

· 建议一:变量,函数,文件命名应该具有描述性,最好采用英文单词或其组合(不要使用拼音,或者无意义的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)

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

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

  1. 强烈推荐的程序员键盘--红轴手感好按键压力小写代码更轻松

    影响手感的因素:1.按键的弹簧 2.键冒的样式(每一排的键盘都不一样更符合人体工程) 3.键板材料 之所以在此推荐给大家这样的键盘就是因为性价比高,最重要的是键盘到手后,使用起来手感非常不错,最为重要 ...

  2. 写代码犹如写文章: “大师级程序员把系统当故事来讲,而不是当做程序来写” | 如何架构设计复杂业务系统? 如何写复杂业务代码?

    写代码犹如写文章: "大师级程序员把系统当故事来讲,而不是当做程序来写" | 如何架构设计复杂业务系统? 如何写复杂业务代码? Kotlin 开发者社区 "大师级程序员把 ...

  3. 社区圆桌分享:代码学习无止境,程序员如何规划自己的职业生涯发展?

    CloudWeGo Study Group 是由 CloudWeGo 社区发起的学习小组,开展以 30 天为一期的源码解读和学习活动,帮助新成员融入社区圈子,和社区 Committer 互动交流,并学 ...

  4. java 书籍推荐 JavaEE程序员必读图书大推荐

    java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给 ...

  5. 推荐给程序员们的十条编程原则

    对于新手程序员们来说,拥有良好的代码量积累和一定的熟练度可以顺利的上手工作:而想要进一步的提升自己的代码能力和工作效率,掌握必要的编程原则也是重要的环节. 前言 对于新手程序员们来说,拥有良好的代码量 ...

  6. 数据结构 python的书推荐-为什么程序员一定要学数据结构?数据结构书单推荐~...

    原标题:为什么程序员一定要学数据结构?数据结构书单推荐~ 来自:程序员书库(ID:OpenSourceTop) 人们最初使用计算机是用来处理简单的数值计算问题,当你使用计算机来处理一个问题时,一般经过 ...

  7. 看不懂代码,不会用框架,新手程序员入职后如何快速上手项目?

    大家好,我是良许. 对于职场新人,特别是应届毕业生,他们拿到offer之后,进入公司后会有一段时间的焦虑感.比如说,不懂公司项目开发流程,代码看不懂,业务流程也不知道,框架不会用,等等还有各种各样的问 ...

  8. mac好用的软件推荐之程序员篇

    mac好用的软件推荐之程序员篇 前言 write:2020/06/21 updated: null 持续更新 免费软件推荐 appcleaner 一款用于能够最大程度删除软件的软件.功能描述好像有点拗 ...

  9. 春暖花开日,正是读书时——4月推荐给程序员们的书

    春暖花开日,正是读书时.本期小编依旧给大家推荐很多新书. 本期特别推荐 <高效能程序员的修炼>姊妹篇 挖掘程序员职业生涯中的痛点 <程序员的修炼>包含了Coding Horro ...

最新文章

  1. C++多线程中互斥量std::mutex与模板类std::lock_guard
  2. day15-pymysql模块的使用
  3. winpythonhadoop_让python在hadoop上跑起来
  4. 如何在JUnit4中按特定顺序运行测试方法?
  5. Android 四大组件之一(Activity)
  6. 当我谈缓存的时候,我谈些什么
  7. 利用 CSS 实现文字二次加粗和多重边框效果
  8. 计算机声卡视频无法安装驱动程序,声卡驱动装不上怎么办 声卡驱动装不上解决方法【图文】...
  9. 使用three.js模拟城市灯光秀
  10. 【以太网通信】PHY 芯片回环测试
  11. Spring Boot + Spring-Security实现前后端分离双重身份认证初学者指南(手机号密码JWT + 短信验证码)
  12. 量产大厂成熟Foc电机控制代于电动自行车电机Foc控制源码
  13. android登录加密传输,android环境下两种md5加密方式(示例代码)
  14. 直接访问html网址怎么输入,如何设置输入IP地址就直接访问到某一个网站
  15. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个可拖动的拼图游戏动画效果~适合初学者~超简单~ |it前端开发
  16. PS 基础操作学习讲解帖列表
  17. 从IT开发人员到IT行业专家的IT职业规划
  18. 百度收录了大量死链网址如何处理
  19. 过度完美主义让人焦虑
  20. AD中PCB设计开槽

热门文章

  1. linux 临时文件 锁,linux – 无法使用文件描述符flock锁定文件
  2. MBR、DBR、FAT32基础小知识
  3. 共享内存简介及docker容器的shm设置与修改
  4. linux中权限765啥意思,Linux中的文件权限
  5. python有理数_Python中的as_integer_ratio()用于减少给定有理数的分数
  6. python不能安装在中文_无法在Python上安装表
  7. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...
  8. 东京战纪服务器维护中,东京战纪7月21维护公告 当前测试进度介绍
  9. 你用计算机做过什么事情,他偷偷干了什么?(电脑)
  10. android layer阴影,Android Layer-List实现自定义Shape阴影