2012年(158)
分类: C/C++
2012-11-26 09:40:01
网友评论2012-11-26 09:41:57
Diviner
1.3 什么是防御性编程?
顾名思义,防御性编程是一种细致、谨慎的编程方法。为了开发可靠的软件,我们要设计系统中的每个组件,以使其尽可能地“保护”自己。我们通过明确地在代码中对设想进行检查,击碎了未记录下来的设想。这是一种努力,防止(或至少是观察)我们的代码以将会展现错误行为的方式被调用。
防御性编程使我们可以尽早发现较小的问题,而不是等到它们发展成大的灾难的时候才发现。你常常可以看到“职业”的开发人员不假思索飞快地编写着代码。他们开发软件的过程可能是这样的:
他们不断地受到那些从未有时间验证的错误的打击。这很难说是现代软件工程的进步,但它却不断地发生着。防御性编程帮助我们从一开始就编写正确的软件,而不再需要经历“编写-尝试-编写-尝试……”的循环过程。在采用了防御性编程之后,开发软件的过程将变成:
当然,防御性编程并不能排除所有的程序错误。但是问题所带来的麻烦将会
网友评论2012-11-26 09:41:43
周星星
做任何事都需要理由,你能给我一个理由吗?
比如第1条,如果后面的代码错误(比如溢出),你memset还是错误,你不memset也是错误;如果后面的代码正确(比如不溢出),你memset还是正确,你不memset也是正确。 你告诉我memset的理由何在?
比如第2条,[小兵]说“因为你下次如果再 p[1]就报错了”
请问报错了之后怎么办?报错了,当然就会删除掉p[1],此后,既然不会有错误了,那留着p=0干什么?说到底,最多这只能算是一种debug手段,而不应该出现在正式代码中。
况且,在debug阶段,很多调试器或代码检查器都会在你使用p[1]时报错,不需要加上p=0