设为首页 加入收藏

TOP

C++编码规范(一)
2015-07-20 17:25:37 来源: 作者: 【 】 浏览:11
Tags:编码 规范

命名规范

通用命名规则

类型名

类型名(类、结极体、类型定义(typedef)、枚举)以大写字母开始并混合大小写,如

Line, SavingsAccount

变量名

变量名必须以小写字母开始并混合大小写, 如

line, savingsAccount

函数名

函数名必须以小写字母的动词开始并混合大小写,如:

getName(), computeTotalWidth()

常量名

常量名(包括枚举值)必须全部大写并以下划线分隔,如

MAX_ITERATIONS, COLOR_RED, PI

类的私有变量

类的私有变量必须以下划线_作为后缀,如:

class SomeClass {

private:

int length_;

}

名字空间

名字空间的命名必须全部小写,如:

model::analyzer, io::iomanager, common::math::geometry

接口类

接口类的命名以前缀的大写I后跟类名, 如:

class IFoo

{

public:

virtual ~IFoo(){};

virtual void dooo() = 0;

}

模板类型名

模板类型命名必须是单个大写字母,如:

template

template

缩略语

缩略语不必都是大写,如:

exportHtmlSource(); // 这样不好: exportHTMLSource();

openDvdPlayer(); // 这样不好: openDVDPlayer();

全局变量

全局变量命名规则同变量名,只是全局变量必须总是以::来引用,如:

::mainWindow.open(), ::applicationContext.getName()

通用变量

通用变量(如函数参数)的命名应该就是它的类型,且首字母小写,如:

void setTopic(Topic* topic) // 这样不好: void setTopic(Topic* value)

// 这样不好: void setTopic(Topic* aTopic)

// 这样不好: void setTopic(Topic* t)

void connect(Database* database) // 这样不好: void connect(Database* db)

// 这样不好: void connect (Database* oracleDB)

文件名

文件名全部小写,C++文件以.cpp结尾,头文件以.h结尾,文件名与文件里类的名字相同。

非通用命名规则

非通用变量(如局部变量)可以是这样:

Point startingPoint, centerPoint;

Name loginName;

函数名中不应该再包括对象名,如:

line.getLength(); //这样不好: line.getLineLength();

特殊命名规则

指针命名:

Line* line; // 这样不好: Line* pLine;

// 这样不好: Line* linePtr;

枚举常量可以使用一个公共的类型名作为前缀,如:

enum Color {

COLOR_RED,

COLOR_GREEN,

COLOR_BLUE

};

bool类型的变量和函数返回值是bool的函数以is为前缀来命名,如:

isSet, isVisible, isFinished, isFound, isOpen

在某些情况下,有些比is前缀更适合(has, can, should),如:

bool hasLicense();

bool caneva luate();

bool shouldSort();

当有属性的情况下,使用get/set来存取,如:

employee.getName();

employee.setName(name);

matrix.getElement(2, 4);

matrix.setElement(2, 4, value);

想要计算什么可以使用compute,如:

valueSet->computeAverage();

matrix->computeInverse()

想要想找什么可以使用find, 如:

vertex.findNearestVertex();

matrix.findMinElement();

对象的初始化可以使用initialize ,而不要使用init

GUI组件的命名要把组件类型放到变量的后面,如:

mainWindow, propertiesDialog, widthScale, loginText,

leftScrollbar, mainForm, fileMenu, minLabel, exitButton, yesToggle 等。

复数形式变量命名使用如下:

vector points;

int values[];

变量具有前缀n表明这个变量代表了对象的个数,如:

nPoints, nLines

No为后缀的变量表明第几个对象,如:

tableNo, employeeNo

迭代变量应该被命名为i, j, k等,如:

for (int i = 0; i < nTables); i++) {

:

}

for (vector ::iterator i = list.begin(); i != list.end(); i++) {

Element element = *i;

}

对称的命名:

get/set, add/remove, create/destroy, start/stop, insert/delete,

increment/decrement, old/new, begin/end, first/last, up/down, min/max,

next/previous, old/new, open/close, show/hide, suspend/resume, etc.

命名时避免使用缩略语

禁止否定的bool变量名,如:

bool isError; //这样不好: isNoError

bool isFound; //这样不好: isNotFound

异常类命名以Exception作为后缀,如:

class AccessException

{

:

}

注:

1) 不要使用匈牙利命名法

2) Windows定义了很多原有内建类型的同义词(很反感,容易导致类型混乱),如DWORD、HANDLE等等,在调用Windows API时这是完全可以接受甚至鼓励的,但在非调用API时尽量使用原来的C++类型,例如,使用const TCHAR *而不是LPCTSTR;原因:有助于代码的移植。特别是服务器后台开发人员,尽量使用标准的C++类型。

代码书写规范

C++是个特性极其丰富而复杂的语言,本文档旨在提供如何编写高质量C++程序的建议。

原则

正确、简单和清晰第一

软件简单为美(Keep it Sample Software, KISS原则),正确优于速度,简单优于复杂,清晰优于机巧,安全优于不安全。

要避免出现代码“坏味道”,摘录自《重构 改善既有代码的设计》

代码的坏味道

1. 重复代码

2. 过长函数

3. 过大类

4. 过长参数列

5. 发散式变化

6. 霰弹式修改

7. 依恋情结

8. 数据泥团

9. 基本型别偏执

10. switch惊悚现身

11. 平等继承体系

12. 冗赘类

13. 夸夸其谈未来性

14. 令人迷惑的暂时值域

15. 过度耦合的消息链

16. 中间转手人

17.

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇改善C++程序的建议:语法篇1 下一篇SDUT 1941-Friday the Thirteenth..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)