云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C++编程规范-华为-Word文档-已整理过-07-my04

C++编程规范-华为-Word文档-已整理过-07-my04

  • 62 次阅读
  • 3 次下载
  • 2025/12/11 12:03:02

3. 建议12.2 避免指针截断 .......................................................................................................... 50 4. 建议12.3 注意数据类型对齐问题........................................................................................... 50 5. 建议12.4 在涉及网络字节序处理时,要注意进行网络字节序与本地字节序的转换 ....... 50 6. 建议12.5 避免无符号数与有符号数的转换 ........................................................................... 51 7. 建议12.6 创建64 位常量时使用LL 或ULL 作为后缀 ...................................................... 51 8. 建议12.7 区分sizeof(void *)和sizeof(int) ............................................................................... 51 9. 建议12.8 编译器、操作系统相关的代码独立出来 ............................................................... 51

1.14 13全球化 ................................................................................................................................................ 52

1.14.1 13.1 多语言输入输出 ............................................................................................................... 52

1. 原则13.1 使用正确的数据类型和类处理多语言字符和字符串 ........................................... 52 2. 原则13.2 对字符进行处理时,需分配足够的内存空间并确保字符完整 ........................... 52 3. 规则13.1 使用标准库函数判断字符属性,使应用能够支持多区域 ................................... 52 4. 规则13.2 对字符串进行本地化排序、比较和查找时,使用有区域参数的locale::collate<>函数 ................................................................................................................................................. 52 5. 建议13.1 处理Unicode数据时,注意检测BOM是否存在,避免产生多余字符或解码错误 ......................................................................................................................................................... 53 1.14.2 13.2 单一版本 ............................................................................................................................. 53

1. 规则13.3 资源与程序逻辑代码分离 ....................................................................................... 53 2. 规则13.4 保持资源的语义完整性,不要拼接字符串资源 ................................................... 53 3. 建议13.2 资源的键名中包含该资源的应用场景信息 ........................................................... 54 1.14.3 13.3 时区夏令时 ......................................................................................................................... 54

1. 规则13.5 确保本地时间中时区夏令时信息完整 ................................................................... 54 2. 规则13.6 避免使用本地时间直接进行时间计算 ................................................................... 54

1.15 14业界编程规范和书籍 ........................................................................................................................ 55

1.15.1 14.1 业界编程规范 ..................................................................................................................... 55

1. 14.1.1 《google C++ code style》(google C++编程指南) ........................................................ 55 2. 14.1.2 《C++编程规范101条规则、准则与最佳实践》 ....................................................... 55 3. 14.1.3 Microsoft All-In-One Code Framework 《微软一站式示例代码库》 ........................ 55 1.15.2 14.2 扩展学习材料 ..................................................................................................................... 56

1. 14.2.1 C++ primer ........................................................................................................................ 56 2. 14.2.2 effective C++ / more effective C++ .................................................................................. 56 3. 14.2.3 Effective STL .................................................................................................................... 56 4. 14.2.4 inside the C++ object model ............................................................................................. 56

1.1 C++编程规范 总则

1.1.1 资料来源

http://blog.csdn.net/xiyoulele/article/details/7987123

分类: 编码规范 C/C++ 2012-09-17 12:49 101人阅读 评论(0) 收藏 举报 编程c++

C++编程规范专辑:

http://blog.csdn.net/xiyoulele/article/category/1213983

1.1.2 C++编程规范 总则

1. 原则:编程时必须坚持的指导思想。 2. 规则:编程时强制必须遵守的约定。 3. 建议:编程时必须加以考虑的约定。 4. 说明:对此原则/规则/建议进行必要的解释。

5. 示例:对此原则/规则/建议从好、不好两个方面给出例子。 6. 延伸阅读材料:建议进一步阅读的参考材料。

1.2 C++ 编程规范 1 常量

1.2.1 资料来源

http://blog.csdn.net/xiyoulele/article/details/7987126

分类: C/C++ 编码规范 2012-09-17 12:50 369人阅读 评论(2) 收藏 举报 c++编程session编译器工作手机

1.2.2 C++ 编程规范 1 常量

不变的值更易于理解、跟踪和分析,所以应该尽可能地使用常量代替变量,定义值的时候,应该把const 作为默认的选项。

1. 规则1.1 使用const常量取代宏

说明:宏是简单的文本替换,在预处理阶段时完成,运行报错时直接报相应的值;跟踪调试时也是显示值,而不是宏名;宏没有类型检查,不安全;宏没有作用域。

示例:

#define MAX_MSISDN_LEN (20) //不好的例子 const int MAX_MSISDN_LEN = 20; //好的例子

2. 规则1.2 一组相关的整型常量应定义为枚举

说明:之所以使用枚举,基于:

枚举比#define或const int更安全,因为编译器会检查参数值是否位于枚举取值范围内,从而避免错误发生。

示例:

//好的例子:

enum DayOfWeek{sunday,monday, tuesday, wednesday, thursday, friday, saturday}; enum Color{black, blue, white, red, purple};

BOOL ColorizeCalendar(DayOfWeek today, Color todaysColor); ColorizeCalendar(blue, sunday); //编译报错,Blue和Sunday位置错误

//不好的例子: const int sunday = 0; const int monday = 1; const int black = 0; const int blue = 1;

BOOL ColorizeCalendar(int today, int todaysColor); ColorizeCalendar(blue, sunday); //不会报错

当枚举值需要对应到具体数值时,须在声明时显示赋值。否则不需要显式赋值,以避免重复赋值,降低维护(增加、删除成员)工作量。

示例:

//好的例子:S协议里定义的设备ID值,用于标识设备类型 enum TDeviceType {

DEV_UNKNOWN = -1, DEV_DSMP = 0, DEV_ISMG = 1, DEV_WAPPORTAL = 2 };

程序内部使用,仅用于分类的情况,不应该进行显式的赋值。 示例:

//好的例子:程序中用来标识会话状态的枚举定义 enum TSessionState {

SESSION_STATE_INIT, SESSION_STATE_CLOSED,

SESSION_STATE_WAITING_FOR_RSP };

应当尽量避免枚举值重复,如必须重复也要用已定义的枚举来修饰,例如:

typedef enum {

RTCP_SR = 200,

RTCP_MIN_TYPE = RTCP_SR, //must be lowest known type RTCP_RR = 201, RTCP_SDES = 202, RTCP_BYE = 203, RTCP_APP = 204, RTCP_RTPFB = 205, RTCP_PSFB = 206, RTCP_XR = 207, RTCP_RSI = 208, RTCP_PUBPORTS = 209,

RTCP_MAX_TYPE = RTCP_PUBPORTS //must be highest known type } rtcp_type_t;

3. 规则1.3 不相关的常量,即使取值一样,也必须分别定义

说明:一个常量只用来表示一个特定功能,即一个常量不能有多种用途。 示例:

//好的例子:协议A和协议B,手机号(MSISDN)的长度都是20。 unsigned const int A_MAX_MSISDN_LEN = 20; unsigned const int B_MAX_MSISDN_LEN = 20; //或者使用不同的名字空间:

namespace alib {

unsigned const int MAX_MSISDN_LEN = 20; }

namespace blib {

unsigned const int MAX_MSISDN_LEN = 20; }

4. 建议1.1 尽可能使用const

说明:在声明的变量或参数前加上关键字const用于指明变量值不可被篡改。类成员函数加上const限定符表明该函数不会修改类成员变量的状态。

使用const常见的场景:

A. 函数参数:传递引用时,如果函数不会修改传入参数, 该形参应声明为const。

B. 成员函数:访问函数(如get函数);不修改任何数据成员的函数;未调用非const函数、未返回数据成员的非const指针或引用的函数。

C. 数据成员:如果数据成员在对象构造之后不再发生变化, 可将其定义为const。

1.3 C++编程规范 2 初始化和类型转换

资料来源:

http://blog.csdn.net/xiyoulele/article/details/7987132

分类: C/C++ 编码规范 2012-09-17 12:52 471人阅读 评论(0) 收藏 举报 编程c++编译器classstringemail

1.3.1 2.1 声明、定义与初始化

1. 规则2.1 禁止用memcpy、memset初始化非POD对象

说明:POD 全称是“Plain Old Data”,是C++ 98标准(ISO/IEC 14882, first edition, 1998-09-01)中引入的一个概念,POD类型主要包括int, char, float,double,enumeration,void,指针等原始类型及其集合类型,不能使用封装和面对对象特性(如用户定义的构造/赋值/析构函数、基类、虚函数等)。

由于非POD类型比如非集合类型的class对象,可能存在虚函数,内存布局不确定,跟编译器有关,滥用内存拷贝可能会导致严重的问题。

即使对集合类型的class,使用直接的内存拷贝和比较,破坏了信息隐蔽和数据保护的作用,也不提倡memcpy、memset操作。

示例:×××产品程序异常退出(core dump)。

经过现场环境的模似,程序产生COREDUMP,其原因是:在初始化函数内使用memset(this, 0,sizeof(*this))进行了类的初始化,将类的虚函数表指针被清空,从而导致使用空指针。

解决方案:使用C++构造函数初始化,不要使用memset函数初始化类对象。

2. 建议2.1 变量使用时才声明并初始化

说明:变量在使用前未赋初值,是常见的低级编程错误。使用前才声明变量并同时初始化,非常方便地避免了此类低级错误。

在函数开始位置声明所有变量,后面才使用变量,作用域覆盖整个函数实现,容易导致如下问题: 程序难以理解和维护:变量的定义与使用分离。

变量难以合理初始化:在函数开始时,经常没有足够的信息进行变量初始化,往往用某个默认的空值(比如零)来初始化,这通常是一种浪费,如果变量在被赋于有效值以前使用,还会导致错误。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

3. 建议12.2 避免指针截断 .......................................................................................................... 50 4. 建议12.3 注意数据类型对齐问题........................................................................................... 50 5. 建议12.4 在涉及网络字节序处理时,要注意进行网络字节序与本地字节序的转换 ....... 50 6. 建议12.5 避免无符号数与有符号数的转换 ........................................................................... 5

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com