初入社会戏人生4-代码风格

05/08/2020

C++代码风格

前言

每一个程序员都有会有自己的代码风格,有些风格利于自己或者他人阅读,但有些不利于理解。每一家公司都有不同的代码风格,他们约束程序员统一风格,以便于互相阅读和理解。

优势

  • 分享代码
  • 可读性高
  • 维护方便
  • 利于Debug

目的

写出更高效的,可复用的,更稳定的代码,一切有利于阅读的代码都是可以书写的。

命名规范

驼峰写法

短语中每一个单词首字母大写。

类型名第一个单词首字母大写

除了内置类型,STL模板类型等,只要是自己声明的类型需要首字母大写。比如Class,typedef/using,Structure。

变量名第一个单词首字母小写

Object obj; // class Object;
Point p1; //class Point;
SavingAccount savingsAccout; //class SavingAccount;

常量名字全部大写

被const,#define等修饰的内置类型的变量名全部大写,包括枚举中的值,并且每一个单词用下划线分割。
内置类型:char,short,int,long,double,float等

const int MAX_ITERATOR = 10;
static const double PI = 3.14;
#define DEBUG 1
#define SQUARE(X) (X)*(X)
#define READ_FILE_H
enum Color //Color 是类型名字
{
	COLOR_RED,
	COLOR_GREEN,
	COLOR_YELLOW
};
//Color p = COLOR_RED;

特殊情况不需要大写:

  • 数据成员
  • 类的实例
class Object
{
	const int mVariable; //数据成员不需要大写
	static const int MAX_COUNT = 10; //静态常量的数据成员可以大写
};
void test(const Object&);
const Object object;

命名空间的名字建议首字母大写

namespace ObjectiveC
{
};

模板类型名建议首字母大写,最好只有一个字母

template<class C, class D> 

函数名字首字母小写,并且以动词作为第一个单词

函数名第一个单词的首字母小写,后面的单词的首字母大写
动词有:get,add,compute等

void getName();
void computeTotalMoney();

函数和成员函数参量的名字最好表达意思

静态函数和成员函数需要以s作为开头

静态的用s开头来与普通的进行区分

扫描二维码关注公众号,回复: 11342553 查看本文章
void sGetName();
void sComputeTotalMoney();

变量名

变量名最好不要有二义性

静态变量名以s为开头,并减少使用它们

static int sFood;

全局变量名以g为开头,并减少使用全局变量

int gCount = 10;
// main

数据成员以m为开头

class Food
{
private:
	std::string mName;
	double mPrice;
};

类名和类类型尽量保持一致

  • 但有时候无法保持一致,需要强调内容,后缀最好一致
Database database;
Topic topic;
Point startingPoint;
Point centerPoint;
Name loginName;

get/set用来读写数据成员

文件

头文件宏定义全部大写,并加上后缀H

include的排列方式最好从底层文件到高层文件,并区分开来

#include <iomanip>
#include <vector>

#include <XBOX/XBOX.h>
#include <PS/PS4.h>

#include "ui/HouseScene.h"
#include "ui/MainWindow.h"

迭代语句和条件语句

无限循环建议使用while(true)

for-loop中最好是简单的初始化

int sum;
for(int i = 0, sum = 0;i < 10; i++)
for(int i = 0; i < 10; i++)

最好不要使用do-while语句,难以理解

减少使用break和continue语句

bool类型修饰,建议开头有前缀is

  • is
  • has
  • should
  • 其他修辞
bool isFound = false;
bool hasOne = false;
bool shouldSort();

条件语句中的表达式最好提出来写

if(size>=0 && size <= 10) //bad

bool isInRange = size>=0 && size <= 10;
if(isInRange)

不要再条件语句中执行语句

if(!(file = open(fileName,"w"))) //bad

file = open(fileName,"w"); //Ok
if(!file)

其他/歧义

类型转换建议使用显式的,不要用隐式的转换

intValue = floatValue; //Bad
intValue = (int)floatValue;

public, protected and private 限定访问符

主要public是可以被用户使用的,后面的protected,private并不需要去阅读它们。

class Object
{
public:
	...
protected:
	...
private:
	...
};

List作为后缀名表示数组或者容器

Vertex vertex //一个点
std::vector<Vertex> vertexList //一组顶点

数据成员最好不要是public的

指针赋值或使用不要使用0,0.0,或NULL。

用到浮点数时,建议突出小数的性质

float x = 0.0;

double sum;
sum = (a + b) * 10.0;

double sum = .5 // Bad 0.5

专业术语方便理解函数

  • compute
  • find
  • initialize

缩写词汇作为前缀

  • num:表示物体的数量
  • i : 与后缀No一个意思,表示下标

缩写词汇作为后缀

  • No : 表示下标index,或者一个数字
tableNo;
employeeNo;

一对相反的词汇

  • get/set
  • add/remove
  • create/destory
  • start/stop
  • insert/delete
  • increment/decrement
  • old/new
  • begin/end
  • first/last
  • up/down
  • min/max
  • next/previous

不建议使用缩写,有时候缩写的意思对不同的人会产生二义性

对齐和缩进可以提升代码的阅读性

猜你喜欢

转载自blog.csdn.net/weixin_44200074/article/details/105974606