欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

防御性编程

程序员文章站 2022-05-31 10:28:25
...
一,态度是指引到优秀的基础
二,方法和策略是达到优秀的条件
因为现实情况是:需求会经常变革,设计不到位,增加功能,人员流失,团队士气...这 让我们并不是在一个”舒适“的环境怡然自得的开发,而是在战场,所以需要一些战斗的技巧和策略,需要聪明的战斗。
所以:我们学习自己过去的错误从中获得智慧,我们学习他人的错误教训,我们跟随他人的成功之道。
三,我们必须热爱代码,热爱这一份创造的事业
以前:是算法,软硬件精通的英雄
现在:是组合的大师,平衡的大师
未来:是平衡


四,基于著名的:凡是可能出错的,一定会出错
基于要做一名优秀程序员的目标

我们彼此猜忌,这情非得已,是防止背叛的唯一武器。
===>防御性编程
0,现实世界不完美
1,不要作任何设想(假设)一定不会出现什么...
2,不要仓促的写代码
3,不要相信任何人
4,保持简单清晰
5,编译时打开所有的警告
6,使用静态分析工具
7,使用安全的数据结构
或安全的使用危险的数据结构

char copy(const char *src)
{
char *buf = new char[10]
strncpy(buf,src,10);
//strcpy(buf,src); dangerous
return buf;
}

8,检查所有返回值
9,小心处理资源(内存,文件句柄,锁...)
10,声明位置初始化变量
避免不同编译器的不同行为
11,使用标准的语言工具
不要使用特殊特性
12,变量声明位置接近使用位置
13,使用诊断信息日志工具
14,小心强制转换
出错地点之一,不论PHP,C,JAVA...
15,其它
数组界
能常量的就常量
提供默认行为
====>约束
1,前置条件
2,后置条件
对多返回出口不好作
3,不变条件
4,断言
约束------>design by contract
5,注意约束不要引入副作用!!!
6,约束的内容即一些需要检测的内容
数值界,指针不为空,文件句杯有效.......

===============
对业务逻辑,有些约束可以换用“更适合”的数据类型来表达(避免约束语句,类型是更加底层的约束)
约束写在函数体内比较好

一切好的习惯是需要训练的,因为维持整个“有序”状态,是需要能量的,我们处在熵增大的世界,即不维持会达到最大混乱状态的世界