编程规范 您所在的位置:网站首页 文件名的命名规则中不允许使用的字符是 编程规范

编程规范

2023-04-13 09:36| 来源: 网络整理| 查看: 265

一.作用域 1. 不在构造函数中做太多逻辑相关的初始化; 2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器 不再提供,需要编码者自行提供默认构造函数; 3. 为避免隐式转换,需将单参数构造函数声明为explicit; 4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为private 且无需实现; 5. 仅在作为数据集合时使用struct; 6. 组合>实现继承>接口继承>私有继承,子类重载的虚函数也要声明virtual关键字, 虽然编译器允许不这样做; 7. 避免使用多重继承,使用时,除一个基类含有实现外,其他基类均为纯接口; 8. 接口类类名以Interface为后缀,除提供带实现的虚析构函数、静态成员函数外,其 他均为纯虚函数,不定义非静态数据成员,不提供构造函数,提供的话,声明为protected; 9. 为降低复杂性,尽量不重载操作符,模板、标准类中使用时提供文档说明; 10. 存取函数一般内联在头文件中; 11. 声明次序:public->protected->private; 12. 函数体尽量短小、紧凑,功能单一。 二.其它c++特性 1. 对于智能指针,安全第一、方便第二,尽可能局部化(scoped_ptr scoped_ptr); 2. 引用形参加上 const const,否则使用指针形参; 3. 函数重载的使用要清晰、易读; 4. 鉴于容易误用,禁止使用缺省函数参数(值得商榷); 5. 禁止使用变长数组; 6. 合理使用友元; 7. 为了方便代码管理,禁止使用异常(值得商榷); 8. 禁止使用 RTTI RTTI,否则重新设计代码吧; 9. 使用 C++ C++风格的类型转换,除单元测试外不要使用 dynamic_cast dynamic_cast; 10. 使用流还 printf + read/write it is a problem read/write,it problem; 11. 能用前置自增/减不用后置自增/减; 12. const 能用则用,提倡 const 在前; 13. 使用确定大小的整型,除位组外不要使用无符号型; 14. 格式化输出及结构对齐时,注意 32 位和 64 位的系统差异; 15. 除字符串化、连接外尽量避免使用宏; '\0' 16. 整数用 0,实数用 0.0 0.0,指针用 NULL NULL,字符(串)用'\0' '\0'; 17. 用 sizeof(varname) sizeof(varname)代替 sizeof(type) sizeof(type); 18. 只使用 Boost 中被认可的库。 三.日志 1. 关于注释风格,很多 C++ coders 更喜欢行注释,C coders 或许对块注释依然情 C++的 有独钟,或者在文件头大段大段的注释时使用块注释; 2. 文件注释可以炫耀你的成就,也是为了捅了篓子别人可以找你; 3. 注释要言简意赅,不要拖沓冗余,复杂的东西简单化和简单的东西复杂化都是要被鄙视 的; it 4. 对于 Chinese coders 来说,用英文注释还是用中文注释,it is a problem problem,但不 管怎样,注释是为了让别人看懂,难道是为了炫耀编程语言之外的你的母语或外语水平吗; 5. 注释不要太乱,适当的缩进才会让人乐意看,但也没有必要规定注释从第几列开始(我 UNIX/LINUX 自己写代码的时候总喜欢这样),UNIX/LINUX 下还可以约定是使用 tab 还是 space space, space 个人倾向于 space; 6. TODO 很不错, 有时候, 注释确实是为了标记一些未完成的或完成的不尽如人意的地方 , 这样一搜索,就知道还有哪些活要干,日志都省了。 四.格式 1) 返回值总是和函数名在同一行; 2) 左圆括号(open parenthesis)总是和函数名在同一行; 3) 函数名和左圆括号间没有空格; 4) 圆括号与参数间没有空格; 5) 左大括号(open curly brace)总在最后一个参数同一行的末尾处; 6) 右大括号(close curly brace)总是单独位于函数最后一行; 7) 右圆括号(close parenthesis)和左大括号间总是有一个空格; 8) 函数声明和实现处的所有形参名称必须保持一致; 9) 所有形参应尽可能对齐; 10) 缺省缩进为 2 个空格; 11) 独立封装的参数保持 4 个空格的缩进。 五.代码相关 1. 行宽原则上不超过 80 列,把 22 寸的显示屏都占完,怎么也说不过去; 2. 尽量不使用非 ASCII 字符, 如果使用的话, 参考 UTF-8 格式 (尤其是 UNIX/Linux UNIX/Linux Windows 下,Windows 下可以考虑宽字符),尽量不将字符串常量耦合到代码中,比如独立出资 源文件,这不仅仅是风格问题了; MSVC 3. UNIX/Linux 下无条件使用空格,MSVC 的话使用 Tab 也无可厚非; 4. 函数参数、逻辑条件、初始化列表:要么所有参数和函数名放在同一行,要么所有参数 并排分行; 5. 除函数定义的左大括号可以置于行首外,包括函数/类/结构体/枚举声明、各种语句的 左大括号置于行尾,所有右大括号独立成行; 6. ./->操作符前后不留空格,*/& */&不要前后都留,一个就可,靠左靠右依各人喜好; 7. 预处理指令/命名空间不使用额外缩进,类/结构体/枚举/函数/语句使用缩进; 8. 初始化用=还是()依个人喜好,统一就好; 9. return 不要加() 10. 水平/垂直留白不要滥用,怎么易读怎么来。

相关总结: 13.定义函数时,输入参数(值传递,常数引用)在前,输出参数(非常数引用)在后 14.对那些临时的、短期的解决方案,或已经够好但并不完美的代码使用 TODO 注释。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有