防御性编程
程序员文章站
2022-05-31 10:28:25
...
一,态度是指引到优秀的基础
二,方法和策略是达到优秀的条件
因为现实情况是:需求会经常变革,设计不到位,增加功能,人员流失,团队士气...这 让我们并不是在一个”舒适“的环境怡然自得的开发,而是在战场,所以需要一些战斗的技巧和策略,需要聪明的战斗。
所以:我们学习自己过去的错误从中获得智慧,我们学习他人的错误教训,我们跟随他人的成功之道。
三,我们必须热爱代码,热爱这一份创造的事业
以前:是算法,软硬件精通的英雄
现在:是组合的大师,平衡的大师
未来:是平衡
四,基于著名的:凡是可能出错的,一定会出错
基于要做一名优秀程序员的目标
我们彼此猜忌,这情非得已,是防止背叛的唯一武器。
===>防御性编程
0,现实世界不完美
1,不要作任何设想(假设)一定不会出现什么...
2,不要仓促的写代码
3,不要相信任何人
4,保持简单清晰
5,编译时打开所有的警告
6,使用静态分析工具
7,使用安全的数据结构
或安全的使用危险的数据结构
8,检查所有返回值
9,小心处理资源(内存,文件句柄,锁...)
10,声明位置初始化变量
避免不同编译器的不同行为
11,使用标准的语言工具
不要使用特殊特性
12,变量声明位置接近使用位置
13,使用诊断信息日志工具
14,小心强制转换
出错地点之一,不论PHP,C,JAVA...
15,其它
数组界
能常量的就常量
提供默认行为
====>约束
1,前置条件
2,后置条件
对多返回出口不好作
3,不变条件
4,断言
约束------>design by contract
5,注意约束不要引入副作用!!!
6,约束的内容即一些需要检测的内容
数值界,指针不为空,文件句杯有效.......
===============
对业务逻辑,有些约束可以换用“更适合”的数据类型来表达(避免约束语句,类型是更加底层的约束)
约束写在函数体内比较好
一切好的习惯是需要训练的,因为维持整个“有序”状态,是需要能量的,我们处在熵增大的世界,即不维持会达到最大混乱状态的世界
二,方法和策略是达到优秀的条件
因为现实情况是:需求会经常变革,设计不到位,增加功能,人员流失,团队士气...这 让我们并不是在一个”舒适“的环境怡然自得的开发,而是在战场,所以需要一些战斗的技巧和策略,需要聪明的战斗。
所以:我们学习自己过去的错误从中获得智慧,我们学习他人的错误教训,我们跟随他人的成功之道。
三,我们必须热爱代码,热爱这一份创造的事业
以前:是算法,软硬件精通的英雄
现在:是组合的大师,平衡的大师
未来:是平衡
四,基于著名的:凡是可能出错的,一定会出错
基于要做一名优秀程序员的目标
我们彼此猜忌,这情非得已,是防止背叛的唯一武器。
===>防御性编程
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,约束的内容即一些需要检测的内容
数值界,指针不为空,文件句杯有效.......
===============
对业务逻辑,有些约束可以换用“更适合”的数据类型来表达(避免约束语句,类型是更加底层的约束)
约束写在函数体内比较好
一切好的习惯是需要训练的,因为维持整个“有序”状态,是需要能量的,我们处在熵增大的世界,即不维持会达到最大混乱状态的世界
下一篇: 干嘛交白卷?