博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防御式编程
阅读量:7283 次
发布时间:2019-06-30

本文共 733 字,大约阅读时间需要 2 分钟。

最近在进行一个C/S模型程序集成测试时屡次出现程序崩溃而费时去寻找bug的问题。为此我和团队成员一起探讨了何谓”防御式编程“,为何要做”防御式编程“。

 
    何谓防御式编程,“防御式编程的中心思想是:
子程序不因传入错误数据而被破坏,哪怕是有其他程序产生的错误数据。”引自《代码大全》p187——(防御式编程)。说说我们写程序常有的误区,比如我们会假定某处一定存在我们要加载的文件;比如我们会假定客户端一定会传入服务端我们想要的数据格式;比如我们会假定对方提供的插件一定是符合主程序的规格;......但是一切不会如我们预期的这样理想,往往对程序造成的结果就是出现一些不知所云的bug,甚至出现程序崩溃。
 
    所以我们要进行防御式编程,当我们在进行接口或者子程序的编写需要和其他接口和程序进行数据交流时,请不要相信“他们”,我们应该对他们给我们的数据首先进行数据规则的判断,如果不符合我们的规则,我们可以拒绝他们,或者可以转换为合法的数据来保护自身。引用社会上的一句话,“在这个缺乏诚信的社会,保护自己的最好方法就是别轻信他人或者做好自己”。
 
    理解了防御式编程的思想,下面我们就要开始建立防线。在这道防线里我们可以使用断言技术来处理绝不应该发生的状况,用错误处理代码来处理预期会发生的状况,用异常技术来解决自己无法处理的状况,用隔离程序来保护自己,增加各种辅助调试的代码和日志,我们还可以采用积极进攻的策略来让“敌人”来攻击我们用来测试我们的防线然后稳固他。
 
    做到写出固若金汤的程序也不是一朝一夕的事,请你在写每一个子程序时都用最严格的策略保护他,谨慎的修补他,慢慢的你就会拥有一个无法攻破的城堡。
 
http://blog.51cto.com/yaocoder/1035789

转载地址:http://fjkjm.baihongyu.com/

你可能感兴趣的文章
实验三 编程、编译、连接、跟踪
查看>>
构建之法第一章
查看>>
进制之间的互相转换,进制的原码,反码,补码
查看>>
Tomcat02
查看>>
SQL Server 添加描述
查看>>
locust===Writing a locustfile
查看>>
生产者消费者模式
查看>>
oracle学习篇五:组函数,分组统计
查看>>
PHP-Manual的学习----【语言参考】----【类型】-----【NULL】
查看>>
Colorable Fantasy UI
查看>>
C# Reflection BindingFlags
查看>>
NGUI3.x Button事件
查看>>
FFmpeg 官方 20160227 之后 追加 libmfx 无法在 xp 上运行的解决方法
查看>>
多线程的使用注意点
查看>>
【GitHub】README.md文件中 markdown语法 插入超链接
查看>>
移动着,心就变了
查看>>
2014冬去春来
查看>>
Python全栈--6.1-match-search-findall-group(s)的区别以及计算器实例
查看>>
基本概念
查看>>
《Linux内核设计与实现》读书笔记(10)--- 定时器和时间管理(2)
查看>>