我的以为读书有三个阶段。第一个阶段是读书前的已有的认知。第二个阶段是通读一本书后get 到的东西。最后也是对于一本好书最重要的就是精读后改变本身已有认知,提升自身能力。最后一个阶段是对于一本好书本必须经历的阶段,这个阶段付出时间成本很高但也最有养分,此种感受“妙趣横生”,是一种升华,对于一个执着于日日精进的工程技术人员来讲这就是“求道”。程序员
对于如何编写无错代码这个问题?若是能够获得这个问题的答案,能够带来巨大的利益,因此这个问题具备极大的吸引力!这个问题也困扰每个从业人员。通过各类碰壁或项目的煎熬后,咱们完全的失望了。得出一个结论:只要是人就必定会常常出错,想写一个0bug的程序几乎是不可能的。这个答案彷佛是正确的,但这个答案对于咱们面对项目交付时间带来的焦虑和压力没有一点做用。面对现实的巨大需求,咱们必需要想出对策并付诸于行动,而后咱们的测试小伙伴的队伍愈来愈庞大,而后咱们的程序员和测试成为了“天敌”。最后咱们仍是走偏了,这些无非是把一个无解的问题上升到哲学的无聊把戏。想要编写无错作好的方法就是把防错放在第一位。但这个放错方式确定不是用测试来防错这种被动模式,咱们追求一种主动防错模式。编程
通读这本《微软C编程精粹》后我大概有了一个解决办法。虽不能写出“原教旨”般的0错误,但这个办法确实能够解决问题,给咱们带来高效的带来商用版本。这个也是无限逼近获得的最优解了。写出无错代码须要态度和追求。把态度摆好,代码是本身写的,查错也是本身的主要责任。追求尽量早的查出错误,并且在差错时不该该依赖其余人。习惯这些,你虽然不能保证必定能够写出无错代码,当你确实是在正确的道路上,必然有个不错的收获。安全
“大事必作于细”,既然知道是正确的道路,我必然精读下去。获得具体的措施。态度是本书的结尾。若是对于做者全部的建议,咱们作但持怀疑态度和继续使用之前的编程方法,想写出无错代码必然困难重重,必定会像管理不善的球队输多赢少。咱们做为专业的程序员,测试必不可少,就像大厦的施工不可能没有外面结实的脚手架保护同样。在忙于应对项目问题的时候常常抬起头看看远方,想一想为何会出错,如何从源头杜绝错误的发生。本书主要从七个方面作了详细的建议,我也从七个方面写下个人感觉.函数
1、对于和咱们紧密相关的工具,咱们不能无论不顾,若是有条件能够定制改造,编译的时候打开尽可能多的告警。工具
2、编译器查出的只是小部分错误,要学会使用assert查错,对于不清楚的断言要多写注释。同时维护一个包括全部断言的debug版本和release版本。Debug版本只是用来差错,大些慢些都不是问题。测试
3、像足球场入口检票员那样去防错。使用内存日志,对于根本不打算出城的“匪徒”,路障是没有用的,咱们要和银行检查财务报告书中错误那样自已有个“拨款清单”,主动和银行的“拨款清单”对帐,挨家挨户把“匪徒”抓出来。使用壳程序查错。debug
4、常用断点、逐条跟踪、查看数据流的办法运行代码差错。必要是除了C语言步进,还可使用汇编语言级别的步进运行每句代码查错。设计
5、糖果机容易误导人的界面设计咱们坚定杜绝,遵照如下六条函数设计原则:日志
6、作设计写程序要有风险意识,常常问设计和实现有多大的风险,有没有更安全的方法,可否测试一下该设计,使用有严格定义的数据类型。常常反问:“这个表达式会上溢或下溢吗?”,精确地实现设计而非近似地。内存
7、避免编程的假象。写小说须要使读者激动、吃惊、悬疑,而写程序则要简单直接。拿车钥匙的贼仍是贼,释放掉的存储区再去引用就如同你使用过去的钥匙进入曾经的公寓或开走曾经属于你的汽车同样。在设计函数过程当中,当须要向缓冲区传递数据时安全的方法是让调用者分配一个局部(非静态)的缓冲区。“一行清”也称为程序设计语言综合症,不要写通常水平的程序员编写代码。
做者说:“自动的抓住,不靠运气,也不靠技巧,这就是编写无错代码的方法”。
做者还说:“编写无错代码的最好办法是编译时对其进行详尽的测试”。
做者还还说过:“编写无错代码最好的办法是把防止错误放在第一位”。
是的以上就是编写无错代码的方法。