我的最新作业要求我遵循以下标准
"所有方法都有明确的后置条件和带参数的后置条件 先决条件"
我已阅读了一些试图解释前/后条件的网页,但似乎可以掌握它们,有人可以向我解释它们是什么,它们的用途以及如何编写它们?
由于
(我正在学习的语言就是C#)
答案 0 :(得分:4)
在输入方法之前,前提条件必须为true,否则合约无效。 退出方法后,postcodition应该为true。 对不起,我不知道C#,但如果你了解Java,这个选择排序的例子可能会有所帮助。 例如:
public static void selSort(int[] a, int b) {
//Pre-condition: array a is not null and size of unsorted section is bigger than 1.
for(int unsortSz = b; unsortSz >1; unsortSz--) {
int max = 0;
for (int p = 1; p < unsortSz; p++){
if (a[p] > a[max]){
max = p;
}
}
//Post-condition: max is the position of largest element in unsorted part.
// now just swap the last element in unsorted part with max
temp = a[unsortSz-1];
a[unsortSz] = a[max];
a[max] = temp;
}
}
答案 1 :(得分:3)
这是代码合同的一部分。输入方法或属性时,应满足前提条件。而后置条件是方法或属性代码退出时的期望。来自MSDN
前提条件指定调用方法时的状态。他们是 通常用于指定有效的参数值。所有成员 前提条件中提到的必须至少与 方法本身;否则,可能无法理解前提条件 一个方法的所有调用者。
后置条件是方法终止时的状态合约。在退出方法之前检查后置条件。 失败后置条件的运行时行为由 运行时分析器。
另请查看这篇优秀文章 Preconditions, Postconditions: Design by Contract for C#
答案 2 :(得分:1)
调用方法之前的条件称为预编码,如方法名称,参数类型和参数数量等。后置条件是方法结束时的条件,如返回类型为float的方法必须返回浮点数不是int等等。