做一个有灵魂的Code猿
C和C++的编程中,编写代码不只是为了实现功能而写代码,写代码是软件实现功能,也是一种可维护、易于维护的工作,而且是一种艺术。
如果一个程序员写的代码只是为了实现功能,没有注释,代码变量的命名乱七八糟,除了自己能看懂,有的人写的代码自己过了一段时间也看不懂,对于后续代码软件功能的维护,不可行。这样的代码就是垃圾代码,哪怕你当时很快实现了这一功能需求。那么也只是废码。因为不易于后续别人的维护和可移植。
下面浅谈C和C++的基本编程规范。
1、首先实现代码需要.h和.c(或.cpp)文件,这是基本思想,有的编程规范不好的程序员,只要找到main函数,就在里面开始大做文章,搞得main函数不是mian函数,而是所有的功能都在mian函数里写。这样的程序不便于阅读。
那么我们该怎么写呢。接下来就做出常规的文件分类规范。
Circle.h
/*************************************************************************************************
* 文件名称: Circle.h
* 版本: V0.0.0
* 描述: 画圆功能实现的头文件
* 平台: VS2019
* 编写时间: 2019.8.16
* 编写: 神奇的小强
* 更新日志:
**************************************************************************************************/
#pragma once
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
class Circle
{/*注意花括号{另起一行*/
public:
Circle(float x,float y ,float r);
~Circle();
protected:
private:
Coordinate* m_pCenter; /*圆心*/
float m_iRadius; /*半径*/
};
void CircleMian(); /*画圆这个功能的函数入口,非main*/
Circle.cpp
/*************************************************************************************************
* 文件名称: Circle.cpp
* 版本: V0.0.0
* 描述: 画圆功能实现的头文件
* 平台: VS2019
* 编写时间: 2019.8.16
* 编写: 神奇的小强
* 更新日志:
**************************************************************************************************/
#include "Circle.h"
/*-----------------------------------------------------------------------------*
Function: Circle()
Description: 构造函数
Calls:
Data Accessed:
Data Updated:
Input:
Output:
Return:
Others:
*------------------------------------------------------------------------------*/
Circle::Circle(float x, float y, float r)
{/*注意花括号{另起一行*/
cout << "Circle(float x, float y, float r)" << endl;
m_pCenter = new Coordinate(x, y);
m_iRadius = r;
}
/*-----------------------------------------------------------------------------*
Function: ~Circle()
Description: 析构函数
Calls:
Data Accessed:
Data Updated:
Input:
Output:
Return: 0
Others:
*------------------------------------------------------------------------------*/
Circle::~Circle()
{/*注意花括号{另起一行*/
cout << "~Circle()" << endl;
delete m_pCenter;
m_pCenter = NULL;
}
/*-----------------------------------------------------------------------------*
Function: CircleMian
Description: 析构函数
Calls:
Data Accessed:
Data Updated:
Input:
Output:
Return: 0
Others:
*------------------------------------------------------------------------------*/
void CircleMian()
{/*注意花括号{另起一行*/
Circle* circlePointer = new Circle(2,4,5);
/*画圆操作*/
delete circlePointer ;
circlePointer = NULL;
}
main.cpp
/*************************************************************************************************
* 文件名称: main.cpp
* 版本: V0.0.0
* 描述: 主函数文件
* 平台: VS2019
* 编写时间: 2019.8.16
* 编写: 神奇的小强
* 更新日志:
**************************************************************************************************/
#include "Circle.h"
/*-----------------------------------------------------------------------------*
Function: main
Description: 主函数
Calls:
Data Accessed:
Data Updated:
Input:
Output:
Return:
Others:
*------------------------------------------------------------------------------*/
int main(int argc, char** argv)
{/*注意花括号{另起一行*/
CircleMian(); /*调用画圆功能*/
/*...........*/ /*其他功能调用*/
system("pause");
return 0;
}
main函数用来调用其他函数,切记,满函数里不是实现任何功能。
2、在函数或基本定义中,命名函数、变量。不要以不明含义的i、j、k,a、b、c这样定义变量,不要以foo(),s()这样不明含义的名称定义函数名。
int i =0; /*请问i代表什么????*/
void foo(); /*请问foo代表什么???*/
变量和函数要有明确含义的名称。
正规写法:
long long start_time;
long long end_time;
/*------------------------------------------------------------------------------------------------*
Function: GetSystemTime
Description: 获取系统时间
Calls:
Data Accessed:
Data Updated:
Input:
Output:
Return:
Others:
*------------------------------------------------------------------------------------------------*/
int GetSystemTime(long long& sys_time)
{/*注意花括号{另起一行*/
struct timeb system_time;
ftime(&system_time);
sys_time = 1000 * system_time.time +system_time.millitm;
return 0;
}
3、变量的命名,变量的命名用英文,不会英文可以用(有道翻译、或谷歌翻译,不会没有什么的,大家手指伸出来有长短),命名请尽量不要缩写。采用驼峰式命名。
正规举例如下:
int centerCoordinateX; /*圆心坐标x*/
int centerCoordinateY; /*圆心坐标y*/
int radius; /*半径*/
4、结构体、共用体、枚举、类的定义
(1)结构体
typedef struct Phone
{ /*注意花括号{另起一行*/
char s_iBrand[128]; /*注意变量前缀s_i表示结构体成员*/
char s_iName[128];
int s_iPrice;
}Phone;
(2)共用体
typedef union Data
{ /*注意花括号{另起一行*/
int u_iIntType; /*注意变量前缀u_i表示联合体成员*/
float u_iFloatType;
}Data;
(3)枚举
typedef enum OerationCode
{ /*注意花括号{另起一行*/
e_iTurnUp =1, /*注意变量前缀e_i表示枚举成员*/
e_iTurnDown,
e_iTurnLeft,
e_iTurnRight,
}
(4)类class
class Phone
{/*注意花括号{另起一行*/
public:
Phone();
~Phone();
char c_iPhoneName[128]; /*注意变量前缀c_i表示类成员*/
int c_iPhonePrice;
protected:
private:
int c_iRomSize;
int c_iRamSize;
};
代码只要遵守上述4大点,写出来的代码别人一看就能懂,便于修改与维护,下期将会讨论函数指针、数组指针、指针数组与typedef。