第1章 假想的编译程序
1、使用编译程序所有的可选警告设施
2、使用lint来查出编译程序漏掉的错误
3、如果有单元测试,就进行单元测试
第2章 自己设计并使用断言
1、既要维护程序的交付版本,又要维护程序的调试版本
2、要使用断言对函数参数进行确认
3、要从程序中删去无定义的特性或者在程序中使用断言来检查出无定义特性的非法使用
4、不要浪费别人的时间——详细说明不清楚的断言
5、消除所做的隐式假定,或者利用断言检查其正确性
6、利用断言来检查不可能发生的情况
7、在进行防错性程序设计时,不要隐瞒错误
8、要利用不同的算法对程序的结果进行确认
9、不要等待错误发生,要使用初始检查程序
第3章 为子系统设防
1、要消除随机特性——使错误可再现
2、冲掉无用的信息,以免被错误地使用
3、如果某件事甚少发生的话,设法使其经常发生
4、保存调试信息,以便进行更强的错误检查
5、建立详尽的子系统检查并且经常地进行这些检查
6、仔细设计程序的测试代码,任何选择都应该经过考虑
7、努力做到透明的一致性检查
8、不要把对交付版本的约束应用到相应的调试版本上,要用大小和速度来换取错误检查能力
第4章 对程序进行逐条跟踪
1、不要等到出了错误再对程序进行逐条的跟踪
2、对第一条代码路径进行逐条的跟踪
3、当对代码进行逐条跟踪时,要密切注视数据流
4、源级调试程序可能会隐瞒执行的细节,对关键部分的代码要进行汇编指令级的逐条跟踪
第5章 糖果机界面
1、要使用户不容易忽视错误情况,不要在正常地返回值中隐藏错误代码
2、要不遗余力地寻找并消除函数界面中的缺陷
3、不要编写多种功能集于一身的函数,为了对参数进行更强的确认,要编写功能单一的函数
4、不要模棱两可,要明确地定义函数的参数
5、编写函数使其在给定有效的输入情况下不会失败
6、使程序在调用点明了易懂;要避免布尔参数
7、编写注解突出可能的异常情况
第6章 风险事业
1、使用有严格定义的数据类型
2、经常反问:“这个变量表达式会上溢或下溢吗?”
3、尽可能精确地实现设计,近似地实现设计就可能出错
4、一个“任务”应一次完成
5、避免无关紧要地if语句
6、避免使用嵌套的“?:”运算符
7、每种特殊情况只能处理一次
8、避免使用有风险的语言惯用语
9、不能毫无必要地将不用类型地操作符混合使用,如果必须将不同类型地操作符混合使用,就用括号把它们隔离开来
10、避免调用返回错误的函数
第7章 编码中的假象
1、只引用属于你自己的存储空间
2、只有系统才能拥有空闲的存储区,程序员不能拥有
3、指向输出的指针不是指向工作空间缓冲区的指针
4、不要利用静态(或全局)量存储区传递数据
5、不要写寄生函数
6、不要滥用程序设计语言
7、紧凑的C代码并不能保证得到高效的机器代码
8、为一般水平的程序员编写代码
第8章 剩下来的就是态度问题
1、错误几乎不会“消失”
2、马上修改错误,不要推迟到最后
3、修改错误要治本,不要治表
4、除非关系产品的成败,否则不要整理代码
5、不要实现没有战略意义的特征
6、不设自由特征
7、不允许没有必要的灵活性
8、在找到正确的解法之前,不要一味的“试”,要花时间寻求正确的解
9、尽量编写和测试小块代码。即使测试代码会影响进度,也要坚持测试代码
10、测试代码的责任不在测试身上,而是程序员自己的责任
11、不要责怪测试员发现了你的错误
12、建立自己优先级列表并坚持之

《Microsoft编写优质无错C程序秘诀》提纲的更多相关文章

  1. 编写优质无错C程序秘诀!《经验谈》

    这里我将陆续给大家载出我在以前学习和编写c代码时遇到的问题和解决方法.学习的心得,有些是经过查询一些曾经参加微软microsoft的开发小组的老程序员的书籍和资料后提供给大家! 首先,当发现错误时,要 ...

  2. 编写优质嵌入式C程序

    前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序.感觉是有一定的参考价值,所以拿出来分享,抛砖引玉. 转载请注明出处:http://bl ...

  3. 编写优质嵌入式C程序(转)

    前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序.感觉是有一定的参考价值,所以拿出来分享,抛砖引玉. 转载请注明出处:http://bl ...

  4. 测试用(编写优质嵌入式C程序)

    注:相比于Word,如果使用CSDN自带编辑器写出结构清晰的文档,需要花费更多的时间,所以我尝试将我写的一些word文档转换为图片发布,这样就可以保持原来的结构.字体,可以获得更好的可读性.图片的分辨 ...

  5. 编写高性能Web应用程序的10个技巧

    这篇文章讨论了: ·一般ASP.NET性能的秘密 ·能提高ASP.NET表现的有用的技巧和窍门 ·在ASP.NET中使用数据库的建议 ·ASP.NET中的缓存和后台处理 使用ASP.NET编写一个We ...

  6. 编写高性能 Web 应用程序的 10 个技巧

    使用 ASP.NET 编写 Web 应用程序的简单程度令人不敢相信.正因为如此简单,所以很多开发人员就不会花时间来设计其应用程序的结构,以获得更好的性能了.在本文中,我将讲述 10 个用于编写高性能 ...

  7. 转自微软内部资料:编写高性能 Web 应用程序的 10 个技巧

    编写高性能 Web 应用程序的 10 个技巧 转自微软资料数据层性能技巧 1 — 返回多个结果集技巧 2 — 分页的数据访问技巧 3 — 连接池技巧 4 — ASP.NET 缓存 API技巧 5 — ...

  8. 【C#入门教案-02】用记事本编写第一个C#程序-Hello World

    02-用记事本编写第一个C#程序-Hello World 广东职业技术学院  欧浩源 [1]进行.NET程序开发的最基本环境配备 .NET Framework + 代码编辑工具(记事本或Noetpad ...

  9. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

随机推荐

  1. 如何在PHP页面中原样输出HTML代码(是该找本php的数来看了)

    如何在PHP页面中原样输出HTML代码(是该找本php的数来看了) 一.总结 一句话总结:字符串与HTML之间的相互转换主要应用htmlentities()函数来完成. 1.php中的html标签如何 ...

  2. [Ramda] Sort, SortBy, SortWith in Ramda

    The difference between sort, sortBy, sortWith is that: 1. sort: take function as args. 2. sortBy: ta ...

  3. TensorFlow 学习(八)—— 梯度计算(gradient computation)

    maxpooling 的 max 函数关于某变量的偏导也是分段的,关于它就是 1,不关于它就是 0: BP 是反向传播求关于参数的偏导,SGD 则是梯度更新,是优化算法: 1. 一个实例 relu = ...

  4. 【13.77%】【codeforces 734C】Anton and Making Potions

    time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. win10下安装docker步骤(一)

    一.启用Hyper-V 打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图: 请注意电脑默认的Hyper-V虚拟机监控程序是不能进行勾选的,需要 ...

  6. C/C++ 常量的定义与应用(编程中的常量)

    常量一般定义为全局变量,且大写: 1. 字符串常量 const string EXPAND_X = "X+YF"; const string EXPAND_Y = "FX ...

  7. C# 与.NET2.0 中类型Type的GetMethod方法

    C#中类型Type有个GetMethod方法,调用该方法可获取指定方法名的方法信息实例. 使用时,其参数一般为2个,一个是方法名称字符串(可设置条件忽略大小写),另外一个参数为搜索方法的条件枚举. 该 ...

  8. Web 程序的建立

    1 导读 web 基础研发体系指的是, web 研发中一线工程师所直接操作的技术.工具,以及所属组织架构的总和.在过去提升企业研发效能的讨论中,围绕的主题基本都是——”通过云计算.云存储等方式将底层核 ...

  9. jQuery分离构造器

    http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) ...

  10. Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋

    在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一 ...