Windows客户端C/C++编程规范“建议”——前言
前言
工作中接触了很多编程规范。其中最有意思的是,公司最近发布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:“该规范不适用于Windows平台开发”。看来这份规范是由做其他平台开发的同学制定的。那么做Windows开发的人都去哪儿了?后来由于工作需要,项目组需要我制定一份编程规范。这也是我这系列博客的由来。(转载请指明出于breaksoftware的csdn博客)
说到“规范“”,可能没多少人喜欢这样的东西。相信很多工程师和我一样,都喜欢互联网的一些特质:自由、兼容并包。己所不欲勿施于人,所以我制定该“规范”时,也是抱着开放的态度——在”规范“之后加了”建议“二字。之后,我都会统称这些条例为“建议”。
假如说指定“规范”是容易的(其实也不容易),那么最难的是让人遵从。一般如果我们想遵从什么,肯定要先想好我们为什么要遵从,我们遵从之有什么好处,可以给我们带来什么?同样我也是按着这个思维去制定这样的“建议”,我将会从代码的可读性、可维护性、健壮性等角度,思考和编制该“建议”。希望这些“建议”可以协助大家写出更易读、更健壮、更好看的代码。
本“建议”条例分为以下若干等级:
【必须】 |
编码必须遵从。 |
【要求】 |
该规则可以非常好的提高易读性、高效性和安全性。在特殊情况下,可以不遵从,但是需要给出不遵从的理由。 |
【推荐】 |
该规则可以部分提高易读性、高效性和安全性。在大部分情况下,需要遵从。 |
【建议】 |
该规则只是作为建议,代码作者可以根据自己判断来决定。 |
本“建议”中例子代码,使用不同底色表示代码是否存在问题:
表示代码存在问题。
表示一种可以修复存在问题代码的方式。
本建议将分为以下若干模块。我会根据工作中新的发现和认识以及朋友们的建议,不定期更新这些条例。并将更新历史记录在该文的末尾,以便大家查阅。
模块:
- 函数 《Windows客户端C/C++编程规范“建议”——函数》
- 指针 《Windows客户端C/C++编程规范“建议”——指针》
- 函数调用 《Windows客户端C/C++编程规范“建议”——函数调用》
- 表达式和运算 《Windows客户端C/C++编程规范“建议”——表达式和运算》
- 结构 《Windows客户端C/C++编程规范“建议”——结构》
- 宏 《Windows客户端C/C++编程规范“建议”——宏》
- 文件 《Windows客户端C/C++编程规范“建议”——文件》
- 变量和常量 《Windows客户端C/C++编程规范“建议”——变量和常量》
- 风格 《Windows客户端C/C++编程规范“建议”——风格》
更新历史:
时间 | 内容 | 备注 |
2014.07.18 | 录入“建议”各项 | 初稿 |
Windows客户端C/C++编程规范“建议”——前言相关推荐
- Windows客户端C/C++编程规范“建议”——风格
9 风格 9.1 优先使用匈牙利命名法 等级: [推荐] 说明:该方法由微软总设计师设计.Windows上编程最好遵从该标准.详细介绍见:http://zh.wikipedia.org/wiki/%E ...
- Windows客户端C/C++编程规范“建议”——宏
6 宏 6.1 减少宏的使用 等级: [建议] 说明:宏的使用,将使得调试变得麻烦.所以在设计和使用宏的时候,请确保宏的逻辑是阅读者不会去关心细节的行为. 6.2 宏定义中字母需大写 等级: [必须] ...
- Windows客户端C/C++编程规范“建议”——结构
5 结构 5.1 不要使用goto 等级: [必须] 说明:在大型项目中,goto的滥用会导致灾难性后果.因为我们程序中一般不存在从一个函数体内部跳转到另一个函数体内部的场景,所以我们可以将跳转控制在 ...
- Windows客户端C/C++编程规范“建议”——函数
1 函数 1.1 代码行数控制在80行及以内 等级:[要求] 说明:每个函数的代码行数控制应该控制在80行以内.如果超过这个限制函数内部逻辑一般可以拆分.如果试图超过这个标准,请列出理由.但理由不包含 ...
- Windows客户端C/C++编程规范“建议”——变量和常量
8 变量和常量 8.1 尽量不要使用全局变量 等级: [要求] 说明:全局变量的滥用和goto的滥用一样,都是一种灾难.它将使得逻辑变得难以调试和控制. 8.2 不涉及外部使用的全局变量需要使用sta ...
- Windows客户端C/C++编程规范“建议”——文件
7 文件 7.1 正确使用#include 等级:[推荐] 说明:#include <>和#include ""导致编译器在搜索文件时,搜索的路径顺序不同.所以需要正确 ...
- Windows客户端C/C++编程规范“建议”——表达式和运算
4 表达式和运算 4.1 比较操作中将常量设置为左值 等级: [推荐] 说明:编写代码时,如果将常量设置为右值.可能因马虎将"=="写成"="导致逻辑错误.这种 ...
- Windows客户端C/C++编程规范“建议”——函数调用
3 函数调用 3.1 谨慎使用递归方法 等级: [推荐] 说明:递归方式控制不当,可能会导致栈空间不够而崩溃.一般的递归都可以使用循环代替. 3.2 不要使用using namespace 等级: [ ...
- Windows客户端C/C++编程规范“建议”——指针
2 指针 2.1 尽量使用智能指针 等级: [推荐] 说明:正确使用智能指针可以省去指针管理的工作. 2.2 类成员变量指针释放后一定要置空 等级: [必须] 说明:如果类成员变量指针在释放后没有置空 ...
最新文章
- Metadata Service 架构详解 - 每天5分钟玩转 OpenStack(165)
- ES6中的class是如何实现的?(附Babel编译的ES5代码详解)
- 字节跳动面试题:用归并排序判断冒泡排序的轮数
- 分布式系统概念 | 分布式理论:CAP、BASE
- [XML-Jsoup]Jsoup_对象的使用(Jsoup工具类,Document,Elements,Element,Node)
- ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?
- python 嵌套型partials(nested partials)的使用
- android usb存储固定,如何在Android 10中设置默认USB行为
- 2017/2/25 学习笔记
- 转载金阳光测试:关于产品的三类文档
- sklearn学习笔记之开始
- Vite ---- 创建Vue3.0+TS项目
- 爬取网易云音乐解析页面数据的三种方法
- codeforces 贪心 Traps
- python二叉树的非递归遍历
- MathType删除注册表
- 如何在Excel中调节折线图和柱形图(组合图)的高低(位置),让图中的折线和柱形不会出现重叠
- 2017 清北学堂 Day 6终极考试报告
- 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限
- cisco 无线ap ME和LAP模式切换
热门文章
- 站在巨人的肩膀上,Adrian与dlib中face_recongnition模块的贡献者Adam的采访部分翻译
- 自动驾驶中高效的激光雷达里程计
- 让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录一键生成SCSS/LESS结构,敏捷开发必备插件!!!
- UE5真实环境设计入门学习教程
- ceph-objectstore-tool工具使用详解
- 存储器结构层次(二)
- Geant4采用make和cmake编译运行geant4自带例子的方法
- 小米4手机在DDMS下获取data/data目录权限
- 【技巧——windows】直接登陆到桌面,免去输入密码
- IOS6.0 应用内直接下载程序 不需跳转AppStore