1、防御式编程:发生危险时保护自己的操作,比如输入数据非法时;
2、检查所有来自外部输入的值、检查子程序输入参数、决定如何处理错误的输入数据;
3、断言的使用,C++标准的assert宏不支持文本信息,可以自己写一个
#define ASSERT(condition, message){ \
if ( !condition ) { \
LogError("Assertion failed: ", \
#condition, message ); \
exit( EXIT_FAILURE); \
} \
4、用错误处理代码来处理预期发生的错误,断言处理绝不可能发生的错误,先使用断言,后使用错误处理;
5、错误处理技术: 返回中立值、换用下一个正确的数据、返回上次的数据、使用最近接的合法值、将信息记录在日志文件中、返回一个错误码、关闭程序;
6、健壮性和正确性,正确性:永远不会返回不正确的结果,哪怕不返回结果;健壮性:尝试一下,永远不要崩溃;
7、异常机制是不错的错误处理办法;
8、伪代码编程方法,注意伪代码不要使用语言相关特性,迭代设计与开发,优秀的伪代码直接作为注释;
9、测试先行开发,先写测试用例,后开发;
10、重构:迭代过程;