- 13
- 0
- 约3.66千字
- 约 12页
- 2023-01-09 发布于广东
- 举报
C++/C编程规范
——帮助程序员一次性编写出高质量的程序
林 锐 博士
linrui@
上 海 漫 索 计 算 机 科 技 有 限 公 司
目录
0. 编程老手和高手的误区
1. 程序的版式
2. 命名规则
3. 表达式和基本语句
4. 函数设计
5. 内存管理
6. C++/C试题与答案,代码检查表
0. 编程老手和高手的误区
自我臭美的程序员
程序员不同于武林人士,我们不要崇拜邪派高手
大学计算机教育的失误:从来就没有重视质量,绝大多数学士、硕士、博士不了解软件质量,不知道如何有效地提高软件的质量。
高校毕业生C++/C编程考试的结果:程序质量低下
什么是编程老手:能够长期稳定地编写出高质量程序的程序员
什么是编程高手:能够长期稳定地编写出高难度、高质量程序的程序员
1. 程序的版式
1.1 文件结构
版权和版本
头文件的作用
头文件和定义文件的结构,正确使用include,ifndef/define/endif
目录结构
1.2 版式
空行,代码行
代码行内的空格
对齐
修饰符 * 的位置
注释
类的版式:public, private 前后之争
2. 命名规则
不要追求世界上最好的命名规则!在机构内部一致即可。
匈牙利法的利弊
一些共性规则:
直观并且可以拼读,可望文知意,不必“解码”。
名字的长度:min-length max-information 原则
与操作系统和开发工具的风格保持一致
程序中不要出现仅靠大小写区分的相似的标识符
程序中不要出现标识符完全相同的局部变量和全局变量
变量的名字应当使用“名词”或者“形容词+名词”
全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。
用正确的反义词组命名具有互斥意义的变量或相反动作的函数等
尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号
3. 表达式和基本语句
3.1 表达式
如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。
不要编写太复杂的复合表达式。 不要把程序中的复合表达式与“真正的数学表达式”混淆。例如 if (a b c)
3.2 你会编写正确的 if 语句吗
布尔变量与零值比较
整型变量与零值比较
浮点变量与零值比较
指针变量与零值比较
为什么有人用 If(NULL == P) 这样“古怪”的格式
3.3 循环语句
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
建议for语句的循环控制变量的取值采用“半开半闭区间”写法。
3.4 switch, goto …
4. 函数设计
4.1 参数的规则
参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。
参数命名要恰当,顺序要合理。 示例 StringCopy(char *str1,char *str2)
如果参数是指针,且仅做输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。
避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
尽量不要使用类型和数目不确定的参数。例如 printf
4.2 返回值的规则
不要省略返回值的类型。
函数名字与返回值类型在语义上不可冲突。例如 getchar
不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用return语句返回。
有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。例如 char *strcpy(char *strDest,const char *strSrc);
4.3 函数内部实现的规则:在函数体的“入口处”和“出口处”从严把关
在函数体的“入口处”,对参数的有效性进行检查。
在函数体的“出口处”,对return语句的正确性和效率进行检查。
4. 函数设计
4.4 一些建议
函数的功能要单一,不要设计多用途的函数。
函数体的规模要小,尽量控制在50行代码之内。
尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。带有“记忆”功能的函数,其行为可能是不可预测的,因为它的行为可能取决于某种“记忆状态”。
不仅要检查输入参数的有效性,还要检查通过其他途径进入函数体内的变量的有效性,例如全局变量、文件句柄等。
用于出错处理的返回值一定要清楚,让使用者不容易忽视或误解错误情况。
4.5 使用断言
使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况
您可能关注的文档
- 高职应用数学说课稿.ppt
- 羔羊的饲养管理技术要点.ppt
- 搞笑、趣味性心有灵犀题目150题.ppt
- 搞笑版现在完成时语法.ppt
- 告别陋习·牵手文明·主题班会策划.ppt
- 锆石U-Pb协和图及协和年龄加权平均值计算方法.ppt
- 咯血的诊断思路及紧急抢救流程.ppt
- 咯血与呕血的鉴别.ppt
- 歌曲欣赏:春天在哪里.ppt
- 格兰杰因果关系检验.ppt
- 安徽省安庆市潜山市部分学校2025-2026学年七年级下学期阶段学情自测数学试题-普通用卷.docx
- 2026《微型无人机的设计基础综述》2600字.docx
- 安徽六安市金安区2025-2026学年八年级上学期2月期末物理试题-普通用卷.docx
- 2026《五菱汽车公司经营者股权激励实施成效及其启示》9700字.doc
- 北京市第一零九中学2026届高三下学期开学考试数学试题-普通用卷.docx
- 北京海淀实验中学2026届高三下学期数学开学检测试题-普通用卷.docx
- 2026《五菱汽车公司融资模式及融资风险分析》8700字.doc
- 2026《五菱汽车公司物流成本控制研究》文献综述开题报告(含提纲)3800字.doc
- 2026《五菱汽车公司薪酬改革问题研究》开题报告(文献综述)4200字.doc
- 2026《物流企业反内卷的战略转型研究—以顺丰控股为例》13000字.doc
最近下载
- 《GBT19000-2000-质量管理体系基础和术语》.pdf
- 常见阴道炎的规范化诊断流程指南(2025).pptx VIP
- 2024-2025浙教版科学初中七年级下册教学计划 .docx VIP
- 学堂在线 雨课堂 学堂云 医学科研设计 章节测试答案.docx VIP
- 消防员个人安全行动规程.pptx VIP
- 学堂在线 雨课堂 学堂云 《资治通鉴》导读 章节测试答案.docx VIP
- 宣贯培训(2026年)《JTT 329-2025公路桥梁预应力钢绞线用锚具、夹具和连接器》.pptx VIP
- 有创血压及中心静脉压监测.pptx VIP
- 全球绿色航运发展报告(2024-2025).pdf
- 浅议抽水蓄能电站建设财务管理.pdf VIP
原创力文档

文档评论(0)