软件编码规范文档
- 格式:doc
- 大小:141.00 KB
- 文档页数:19
1 项目编号:项目名称首字母+项目性质(系统SYS,网站WEB,办公OA)+项目立项时间例如:湖南中铁国旅系统立项时间2014-11-11项目编号:HNZTGLSYS20141111湖南中铁国旅网站立项时间2014-11-11项目编号:HNZTGLWEB20141111市疾控OA 立项时间2014-10-15项目编号:SJKOA20141015市疾控老人体检系统立项时间2014-10-15项目编号:SJKLRTJSYS201410152 功能编号:项目编号+功能序号例如:湖南中铁国旅系统第一个功能用户登录功能编号:HNZTGLSYS20141111001湖南中铁国旅系统第五个功能添加订单功能编号:HNZTGLSYS201411110053 用例编号:功能编号+用例等级+用例序号例如:湖南中铁国旅系统第一个功能用户登录A级用例第一个用例编号:HNZTGLSYS20141111001A01湖南中铁国旅系统第五个功能添加订单B级用例第三个用例编号:HNZTGLSYS20141111005B03测试阶段描述:第一阶段集成测试代号BT 说明:初级测试阶段A级BUG少于5,BUG总数少于50,可进入下一阶段测试环境为内网内部最优环境第二阶段系统测试代号SAT 说明:中级测试阶段A级BUG不大于1,BUG总数少于10可进入下一阶段测试环境为内网通用环境压力测试(STT):多用户同步使用问题,极限用户数量使用问题安全性测试(SST):URL注入问题,数据注入问题,应急处理措施第三阶段验收测试代号UAT 说明:终极测试阶段无C级以上BUG,BUG总数少于5 可做内部评审测试环境为外网正式环境或模拟客户真实环境4 BUG编号:用例编号+测试阶段+BUG等级+BUG序号例如:湖南中铁国旅系统第一个功能用户登录A级用例第一个集成测试阶段产生A级BUG第三个BUG编号:HNZTGLSYS20141111001A01BTA003湖南中铁国旅系统第五个功能添加订单B级用例第三个系统测试阶段产生C级BUG第十个BUG编号:HNZTGLSYS20141111005B03SATC010湖南中铁国旅系统第五个功能添加订单B级用例第三个验收测试阶段产生C级BUG第十个BUG编号:HNZTGLSYS20141111005B03UATC0105 BUG等级:A B C D E6 用例数规定:(测试用例指描述测试过程期望结果,实际结果,如期望结果与实际结果不符,则产出BUG)每个项目A级用例10个(针对直观问题测试,一看就是错误的,以及界面问题)B级用例40 个(针对数据问题测试,各种正确数据,错误数据,边界数据,非空数据等)C级用例10个(针对流程,权限,状态问题测试)测试功能模板:。
软件项目代码编码规范
软件项目代码编码规范
一、前言
本规范旨在为软件项目的代码编写提供统一的标准和规范,以提高代码质量、可读性、可维护性和可扩展性。
本规范涵盖了代码格式、命名规范、注释规范、代码优化等方面的内容,适用于各类软件开发项目。
二、代码格式
1.缩进:使用4个空格进行缩进,不使用制表符。
2.行宽:一行代码不超过80个字符。
3.换行:在运算符之后换行,例如a = b + c应写为:
a =
b +
c
4.空行:在函数之间、类定义之间和逻辑段落之间插入空行,以增加代码可
读性。
三、命名规范
5.变量名:使用小写字母和下划线,例如my_variable。
6.函数名:使用小写字母和下划线,例如my_function()。
7.类名:使用驼峰命名法,例如MyClass。
8.常量名:使用全大写字母和下划线,例如MY_CONSTANT。
9.模块名:使用小写字母和下划线,例如my_module.py。
10.数据库表名:使用驼峰命名法,例如my_table。
11.字段名:使用驼峰命名法,例如my_field。
12.避免使用具有特殊含义的缩写或简写,例如sum应写为total。
四、注释规范
13.对变量、函数、类等进行注释,解释其作用和用法。
14.对于复杂的代码段或算法,应添加注释以说明意图。
15.使用文档字符串(docstrings)对函数、类等进行详细说明。
16.避免过度注释,尽量让代码本身可读性强。
17.在需要注释的地方使用英文注释,以提高代码国际化程度。
软件编码规范编制审核批准发布日期 20XX-XX-XX目录1 计划规范 (6)1.1考虑冗余时间 (6)1.2尽早制定软件部署方案和用户反馈方案 (6) (6)2 版本规范 (8)3 C/C++代码规范 (9)3.1排版、布局 (9)3.2注释 (11)3.3命名 (13)3.4可读性 (14)3.5变量、结构 (14)3.6函数、过程 (15)3.7类 (16)3.8可测性 (16)3.9程序效率 (17)3.10质量保证 (17)3.11代码编辑、编译、审查 (18)3.12代码测试 (19)3.13宏 (19)3.14其他 (21)阅读说明:◆加“【强制】”的条款为必须满足的内容。
◆加“【建议】”的条款为建议性的内容,根据具体情况实行,不做检查。
◆加“【说明】”的为补充性内容,可以作为实行与检查的依据。
◆其他条款默认为检查项,如果在某些情况下违反,说明理由。
1计划规范1.1 考虑冗余时间软件设计的工时预估是世界公认“估不准”问题,这是导致软件行业“加班”与“跳票”的重要原因。
现在比较通行的做法是:◆【建议】软件设计工作划分得尽量细;◆【建议】由具体的设计人员和上一级管理者预估具体任务的完成时间;◆【建议】在所有统计工时的基础上增加80%的时间;◆【建议】根据工作的进展尽早汇报并调整计划;1.2 尽早制定软件部署方案和用户反馈方案◆【建议】有些部署与反馈方案要在软件内部实现,比如:在线升级、故障数据保存与发送。
这些是软件设计的一部分,应整体考虑。
2版本规范◆【建议】软件产品(可执行文件、动态库等)和安装包使用如X.Y.Z.T的四段版本。
X.Y为主版本号,Z:功能变化时+1;T:逐次编译+1;功能变化且重新编译时,Z+1,T重新置0。
3C/C++代码规范3.1 排版、布局【目标】清晰,利于阅读,防范低级错误。
◆缩进为4个字符宽(使用TAB键,其宽度设置为4个空格)。
◆【建议】函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
软件开发编码规范
1. 前言
编码规范是一些制定约束和规范的方法。
在软件开发中,遵循编码规范可以帮
助开发者更轻松地开发出高效、高质量、易于维护和高性能的软件。
随着项目规模的增大和团队的扩大,软件代码不遵循规范所带来的问题也越来
越明显,为了便于团队协作,提高代码可维护性和可重用性,本文将详细介绍软件开发编码规范。
2. 命名规范
2.1 文件名
文件名应该简洁而具有描述性,使用推荐的文件命名规范。
文件名应全部小写,并使用连字符“-”分隔单词。
例如:
•my-awesome-file.js
•index.html
•my-awesome-file.css
2.2 变量名
变量名应该清晰、简洁和有描述性。
变量名应该遵循一定的命名规范,如下:•变量名应全部小写,并使用下划线“_”分隔单词。
•变量名应该具有描述性,且应该以其类型作为前缀,例如 strName、nCount 等。
•避免使用大小写区分变量类型的命名方式,如 intCount、sMessage 等。
例如:
int age;
string name;
float price_per_unit;
2.3 常量名
常量名要求全部大写,并使用下划线“_”分隔单词。
例如:
``` const int MAX_SIZE = 100; const char *MESSAGE =。
软件开发编程及命名规范一、命名规范 (1)(一)大小写样式 (1)(一)命名指导 (1)(一)编码规范 (2)一、命名规范(一)大小写样式1.首字母大写样式每个单词开头字母大写(TestCounter)2.首字母小写样式除了第一个单词外其他单词首字母大写,如testCounter3.全字母大写样式全部字母都大写,单词间用”_”间隔,尽量少用缩写,如TEST_COUNTER 4.名称区分大小写不要创建两个仅大小写有区别的命名空间,如NameSpace ming;NameSpace ming;不要创建两个仅大小写有区别的参数名称的函数,如Void MyFunction(String A,String a)不要创建两个仅大小写有区别的类型名称的命名空间,如Windows.form.point pWindows.form.POINT p不要创建两个仅大小写有区别的属性名称的类型,如Int color(get,set)Int Color(get,set)不要创建两个仅大小写有区别的方法名称的类型,如Void caclute()Void Caclute()5.缩写在适当的时候,使用众所周知的缩写替代冗长的词组名称,如UI作为user interface的缩写。
(一)命名指导1.类名类名应该是名词或者名词短语,尽可能使用完整的词。
在适当地方,使用复合单词命名派生类。
2.接口名接口名称应该是名词或者名词短语及形容词,使用字符I作为前缀。
3.枚举名对于Enum类型和值名称使用全字母大写样式4.常量名静态常量使用名词或者名词短语使用全字母大写样式5.参数和非常量变量命名使用描述性命名,名称应该明确表达参数的意义及类型。
使用首字母小写样式。
对类内的成员变量和静态变量不使用前缀公有成员使用首字母大写私有成员使用首字母小写内部成员使用首字母小写静态变量使用全字母大写6.UI类的变量命名规则Label类:前缀lbl+名称(首字母小写),如:lblUserNameSelect类:前缀sel+名称(首字母小写),如:selUserTypeForm类:前缀form+名称(首字母小写),如:formLogin7.变量命名循环语句中计数器用i,j,k,l,m8.方法命名推荐动词或者动词短语,如saveCustomer不要在方法中重复类的名称,如:book.closeBook,推荐book.close9.集合命名推荐名词或者名词短语,后缀加List。
C#编码规范文档版本V0.011.目的规范C#代码的书写,提高代码的可读性,使开发人员在代码上更好的协作,减少新开发成员熟悉现有代码的时间,间接提高软件代码的可维护性。
2.命名规范1)命名约定标识符构成:所有标识符应由一个或多个完整的英文单词构成,除通用的缩略词如IO、Http、id等或是项目特定的专用缩略词如项目名称的缩写等,不应使用未被普遍接受的单词缩略形式。
可以适当使用下划线“_”。
2)大小写约定Pascal : 组成标识符的所有单词的首字母大写,如Get、BackColor。
Camel : 组成标识符的第一个单词全小写,后续单词首字母大小,如get、backColor。
全大写:组成标识符的所有单词的所有字母全部大写。
缩略词:➢不要使用半个单词的缩写形式,如GetWin,而应使用GetWindow。
➢不要使用不被普遍认可的首字母缩写。
在适当情况下,使用通用的首字母缩写,如UI表示User interface,而OLAP表示On-line Analytical Processing。
两个字母的缩写单独使用时可以适当使用全大写书写风格替代Pascal风格。
➢不要在标识符或参数名中使用首字母缩写,必须使用时,应使用Camel形式。
➢Id不是首字母缩写,不应使用全大写方式。
3)C#命名规范以.Net 公共语言规范(CLSCompliant)为基础,规定标识符的命名规则。
4)代码书写风格使用Visual Studio默认书写风格,在签入代码之前,应使用Ctrl + K, Ctrl + D快捷键格式化代码,保证源码管理服务器对代码差异的正确评估。
5)编码要求1.单个类、方法的代码行数不应过长,否则应考虑进行拆分。
2.局部变量引用Disposable类实例的,必须使用using 语法进行Dispose 操作。
或在特殊情况下,使用try{..} finally {…} 进行手动Dispose操作。
3.类的实例字段包含Disposable 类型的,类必须也要实现IDisposable接口。
软件编码规范软件编码规范是指在软件开发过程中,为了提高代码质量、可读性、可维护性和可扩展性,制定的一系列规范和标准。
遵循软件编码规范可以帮助开发团队保持一致的编码风格,并减少潜在的bug和错误。
下面是一个简要的软件编码规范:1. 缩进和格式化:- 使用空格进行缩进,每级缩进使用4个空格。
- 在代码块之间添加空行,以提高可读性。
- 对代码进行适当的格式化,使其具有良好的可视化效果。
2. 命名规范:- 使用有意义的变量、函数和类名,要求清晰简洁,并且能准确表达其用途和含义。
- 使用驼峰命名法或下划线分隔的命名风格。
- 避免使用缩写或简写,除非其含义在上下文中非常明确。
3. 注释规范:- 在代码中适当地添加注释,用于解释代码的意图和实现细节。
- 注释应该简洁明了,不冗余,不应该解释显而易见的事实。
- 解释代码的主要思路、算法和关键部分。
4. 函数和方法:- 函数和方法应该尽量保持简短和简单,一个函数或方法只做一件事情。
- 函数和方法的名称应该明确,能够表达其功能和目的。
- 避免使用全局变量,在函数和方法中应该尽量避免副作用。
5. 异常处理:- 在适当的地方进行异常处理,并提供有意义的错误信息。
- 不要吞噬异常,应该适当地处理异常,并向上层传递。
6. 安全性和性能:- 编写安全的代码,防范常见的安全漏洞,如SQL注入和跨站脚本攻击。
- 在编写代码时要考虑性能问题,避免不必要的资源消耗和性能瓶颈。
7. 单元测试和集成测试:- 编写单元测试和集成测试,确保代码的正确性和稳定性。
- 测试用例的命名应该明确,能够清楚表达其测试目的。
8. 版本控制和代码管理:- 使用版本控制系统,如Git,进行代码管理。
- 使用合适的分支策略和代码合并规范,确保代码的一致性和稳定性。
最后,软件编码规范应该根据具体的项目和团队的需求进行制定,灵活适应变化,并且应该经常进行审查和更新,以确保规范的有效性和适用性。
天正软件编码规范一、命名规范1、通则1.1、在所有命名中,都应使用标准的英文单词或缩写,避免使用汉语拼音。
1.2、所有命名都应遵循达意原则,即名称应含义清晰、明确。
1.3、所有命名都不易过长,在可表达清晰的前提下越简洁越好。
1.4、所有命名都应尽量使用全称。
1.5、在类型名称特别复杂的时候,应使用typedef来定义别名。
2、标识符2.1、标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
(较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写)如下单词的常用缩写application app argument arg average avg block blk buffer buf command cmd control ctrl database db delete del description desc dialog dlg dictionary dict dimension dim distance dist document doc entity ent escape esc flag flg increase inc information info length len library lib manager mgr memory mem message msg object obj password pwd picture pic ployline pline pointer ptr position pos record rec reference ref resource rsc screen scr server srv source src system sys temp tmp text txt version ver window wndVC++中常用控件缩写Animate ani Check Box chk ComboBox cmb Edit edt Group Box grp ListBox lst Picture pic Progress prg Push Button btn Radio Button rad Scroll Bar sb Slider sld Static stc Tab Control tab2.2、长的标识符应使用缩写来缩短长度,而特短的标识符应该避免使用缩写。
软件开发规范:编码规范C#编码规范目标:1. 安全:代码完成所需的功能之余,不要产生负作用,即要稳定可靠。
2. 易读: 类、实例、成员变量、成员函数的命名一目了然3. 美观: 尽量统一项目组内人员的编程风格。
第一部分:命名1. 命名原则1) 所有的函数(变量/类/文件名)应该代表其实际的作用,应该使用有意义的单词或多个词组合,但不要使用人名、项目组名。
2) 所有的函数(变量/类名)一律使用英文。
3) 使用多个单词时不需要使用连线(如下划线), 但对于全部大写的宏需要使用连线。
4) 多个词组合较长时, 可以使用单词的缩写。
5) 不得使用非常相近的名字类表示几个不同含义的函数(变量/类)。
6) 命名时请考虑名字的唯一性和含义的准确性。
7) 使用项目组专用词汇来表达特定的含义(概念), 不得把专用词汇挪作他用。
2. 变量的命名原则: 使用匈牙利命名法命名变量1) 变量名一般由“类型修饰+代表变量含意的英文单词或单词缩写”等部分组成。
类型修饰(小写字母):n: int,l: LONG/long, s: short,u: UINT,f: floatb: bool,by: BYTE,ch: char, sz: char[],str: string2) 针对异常捕获过程中的 Exception 变量命名,在没有冲突的情况下,统一命名为e;如果有冲突的情况下,可以重复 e,比如:ee。
3. 函数的命名1) 使用动宾词组表达函数实际所作的事。
2) 同名的函数(重载函数)在功能上应该完全相同, 在参数上的差别也应一目了然。
3) 不得出现名字非常相近但功能不同的函数. 如 CreatePage1(), CreatePage2()等。
4. 类命名1) 名字应该能够标识事物的特性。
2) 名字尽量不使用缩写,除非它是众所周知的。
3) 名字可以有两个或三个单词组成,但通常不应多于三个。
4) 在名字中,所有单词第一个字母大写,缩写都要大写。
C++设计编码规V1.00(试用版)设备开发部黄焕斌目录重要提示 (4)背景 (4)1文件组织规则 (4)1.1命名 (4)1.2目录 (5)1.3预处理 (5)1.4注释 (5)2代码组织规则 (6)2.1空行 (6)2.2换行 (6)2.3空格 (6)2.4对齐 (7)2.5就近原则 (7)2.6精简原则 (7)3命名规则 (8)3.1自注释 (8)3.2变量 (8)3.3函数 (9)3.4类型 (9)3.5宏 (9)3.6常量 (9)4设计规则 (10)4.1识别类和函数 (10)4.2构造函数 (10)4.3封装性 (12)4.4函数参数 (12)4.5函数返回值 (13)4.6契约 (13)4.7规模 (14)4.8名字空间 ........................................................................................... 错误!未定义书签。
4.9类型转换 ........................................................................................... 错误!未定义书签。
4.10常量 (14)4.11联 (14)4.12静态变量 ....................................................................................... 错误!未定义书签。
4.13编译依赖 ....................................................................................... 错误!未定义书签。
4.14可重入 (15)5存管理规则 (16)5.1模块化 (16)5.2静态分配 (16)5.3NEW/DELETE (16)5.4有效性 (16)5.5正确释放 (16)5.6拷贝 (16)6注释规则 (17)6.1有效性 (17)6.2普通注释 (17)6.3D OXYGEN注释 (17)6.4定义 (18)6.5申明 (18)6.6模块 (18)7维护规则 (19)7.1消除警告 (19)7.2代码修改 (19)7.3标本兼治 (19)参考资料 (19)重要提示本规中的示例代码都在表格框中显示,绿色的表格框表示正确的示例代码,红色的表格框表示不建议的示例代码。
背景C++是大华设备软件和平台软件开发的主要软件,在新的软件框架里,两种平台的组件甚至是共用的。
统一的代码风格,良好的设计风格,有利于代码的实现和阅读,有利于减少代码错误和提高代码效率,能有效地促进技术的交流和发展。
常见的代码规都异常冗长,调调框框太多。
本规力求以简明的容,概括一些重要的规则,将相似的规则进行提炼集中描述,并提供对照的示例代码加深理解。
规的使用者花半个小时左右,就可以熟悉整个规。
所有大华基于新软件框架的底层组件,业务组件,应用组件都必须遵守此规。
例外本规是强制要求,不过有些情况例外:与第三方库有关的代码:比如stl,boost,json等等,使用、移植这些库时,相关的代码可以按照这些库的规。
Windows代码:主要指基于公共软件框架,同时使用了非公共组件框架的其他API接口的组件,可以继续保留Windows的规。
1文件组织规则1.1命名所有的目录和文件名使用大写字母开头的单词组合,目录词之间可以用空格分开。
引用文件名时要严格区分大小写。
与操作系统关系密切的工程的命名可以参考操作系统的规则。
Timer.cpp //源文件Timer.h //头文件Font.bin //资源文件Config1 //配置文件1.2目录一个大的工程是由多个组件或模块组成的,对于每个组件或模块,其代码应集中管理,1.3预处理为了防止头文件被重复引用,使用ifndef/define/endif结构产生预处理块。
1.4注释源文件和头文件的头部都应进行注释,列出svn文件ID,申明,文件描述(说明是什么模块或什么类对应的文件),修改记录(修改时间、svn作者、修改容),可使用va模板。
对于新加入svn的文件,应该其文件属性的svn属性列表中加入(svn:keywords, Id)属性。
2代码组织规则2.1空行类、结构、联合、函数、枚举等定义结束后,应加空行。
类定义部相关的成员变量或操作之间不加空行,其他地方应加空行。
函数体,逻揖上密切相关的语句之间不加空行,其它地方应加空行。
2.2换行每行代码只写一条语句。
拆分复杂的复合表达式。
代码行长度控制在80左右。
2.3空格‘,’之后要留空格。
如果‘;’不是一行的结束符号,其后要留空格。
二目或三目操作符前后留空格。
但“[]”、“.”、“->”这类操作符和作用于分辨符“::”前后不加空格。
2.4对齐程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
{ }之的代码块使用TAB缩进并对齐,换行后的代码块使用TAB缩进并对齐。
2.5就近原则较为紧密的代码应尽可能相邻。
变量应在在定义的同时初始化。
C++函数中将局部变量的定义放在要使用它的代码前最近处。
2.6精简原则DRY(Don't Repeat Yourself)系统中的每一项知识都需具有单一的表示。
KISS(Keep It Simple Stupid) 保持尽量简单。
类中多次使用定义的很长的类型,应在类定义中对该类型进行更简洁自定义。
访问一个变量的表达式太长,应定义一个临时的指针或引用来替换它。
函数中多次调用返回结果不变的其他函数,应使用临时变量保存结果。
函数中多次引用单件,应使用临时变量甚至类的成员变量来保存单件的引用或指针。
3命名规则整体上采用Java的命名规则,提高拼写效率。
3.1自注释标识符应是有意义的单词或其组合。
用约定俗成的词,除了通用的缩写,应使用全拼。
拼写要正确,注意单复数,禁止使用拼音。
用最短的长度表达最准确的信息。
//smelly exampletypedef struct tagPICINFO_INJPG{char jpglog[4]; //int type; // 类型0:通行1:超速(暂无效)char sbid[10]; // 设备IDint xscd; // 形行驶IDchar cphm[20]; // 车牌int cplx; // 车牌类型int cpys; // 车牌颜色char tgsj[19]; // 抓拍时间…}PICINFO_INJPG;3.2变量使用“名词”或者“形容词+名词”,首个单词首字母小写开头,其他单词大写打头。
全局变量加前缀“g_”。
成员变量加前缀“m_”,结构和联合的成员变量不用加。
3.3函数使用“动词”或者“动词+名词”(动宾词组),名词前可再加修饰词,首个单词首字母小写开头,其他单词大写打头。
C-API函数最前面应该是是小写的模块名。
3.4类型可直接使用bool,char等建类型,其他使用stdint.h定义的类型。
算术自定义类型,类,结构,联合,枚举类型统一使用大写字母开头的单词组合。
class类型的命名前加大写字母’C’;template class类型的命名前加大写字母’T’;接口类的命名前加大写字母’I’。
3.5宏全部使用大写字母,单词之间用下划线分开。
给代码控制宏命名加上前缀,来分类不同用途的宏。
3.6常量避免使用常量宏,不得不使用时,参考宏的命名规则。
const,枚举值等常量,应尽量作为类的成员,命名方式和变量相同。
4设计规则4.1识别类和函数基本原则是高抽象性,高聚性,低耦合性。
使类的接口完整并且最小。
一个函数不要完成多个功能。
一个变量也不能有多用途。
把方法中的重复代码抽象成私有函数。
尽量使用已有的函数或者标准库来实现新的函数。
区分两个类“A是一个B”与“A是B的一部分”的关系,分别对应类的继承和聚合关系。
// 正确的设计,虽然代码冗长。
class Head{public:void Look(void) { m_eye.Look(); }void Smell(void) { m_nose.Smell(); }void Eat(void) { m_mouth.Eat(); }void Listen(void) { m_ear.Listen(); }private:Eye m_eye;Nose m_nose;Mouth m_mouth;Ear m_ear;};如果允许Head从Eye、Nose、Mouth、Ear派生而成,那么Head将自动具有Look、Smell、Eat、Listen这些功能。
示例十分简短并且运行正确,但是这种设计方法却是不对的。
// 功能正确并且代码简洁,但是设计方法不对。
class Head : public Eye, public Nose, public Mouth, public Ear{};4.2构造函数如果一个类可能有多个构造函数,应有公用的私有初始化函数对成员进行初始化。
如果确定只有一个构造函数,应使用成员初始化列表进行初始化。
并且初始化列表中成员列出的顺序和它们在类中声明的顺序相同。
将采用了单件实例的类或接口的构造函数和析构函数权限设置为private或protected4.3析构函数确定基类有虚析构函数。
4.4拷贝函数与赋值函数为非POD类型(plain-old-data, only ints, chars, floats, or pointers, or arrays/structs of POD)类声明一个拷贝构造函数和一个赋值操作符。
~CZString();CZString &operator =( const CZString &other ){if(this == &other) return *this;CZString temp(other);const char * cstr = m_cstr;m_cstr = temp.m_cstr;temp.m_cstr = cstr;}private:const char *m_cstr;}4.5封装性不要重新定义继承而来的非虚函数、成员、函数的缺省参数值。
避免出现public数据成员。
单件模式对象构造函数应为私有类型。
如果一个操作不会修改对象的属性,应该加const修饰,妥善处理const的传递性。
将只与类有关的常量、类型的定义放在类的部。
class A{public:int getValue() const;private:int value;class Info{};}4.6函数参数如果参数是一个对象,应改成传递其引用或者指针。