前置条件指调用者调用该函数之前必须满足的条件。一般来说,前后置条件都可以转化为assert语句。
比如传递个strcpy的参数必须都是有效指针,win32下调用socket之前,必须先调用WAStartup,等等。
如果不满足前置条件就调用该函数,是属于调用者的bug;
后置条件指该函数在return之前,必须满足的一个约束。
前后置条件一般都包括几个方面:
1)参数
2)返回值
3)全局变量/类成员变量
区分前置条件和运行时异常的方法:
违反前置条件是属于调用者的bug,调用者有责任保证符合前置条件。
处理运行时异常是你自己的责任,没处理好是算你自己的bug。
另外,直接来自用户/外部RPC的输入,不能作为前置条件。