我最近的任务要求我有这个遵循标准
“所有方法都有明确的后置条件和带有参数的前置条件”
我已经阅读了一些试图解释前置/后置条件的网页,但似乎可以掌握它们,有人可以向我解释它们是什么,它们的用途以及如何编写它们吗?
谢谢
(顺便说一下,我正在学习的语言是 C#)
我最近的任务要求我有这个遵循标准
“所有方法都有明确的后置条件和带有参数的前置条件”
我已经阅读了一些试图解释前置/后置条件的网页,但似乎可以掌握它们,有人可以向我解释它们是什么,它们的用途以及如何编写它们吗?
谢谢
(顺便说一下,我正在学习的语言是 C#)
进入方法前,前提条件必须为真,否则合约无效。退出该方法后,后置编码应该为真。对不起,我不懂 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;
}
}
这都是代码合同的一部分。输入方法或属性时,应满足先决条件。而后置条件是方法或属性代码退出时的期望。来自MSDN
前提条件指定调用方法时的状态。它们通常用于指定有效的参数值。前提条件中提到的所有成员必须至少与方法本身一样可访问;否则,方法的所有调用者可能无法理解前提条件。
后置条件是方法终止时的状态契约。在退出方法之前检查后置条件。失败的后置条件的运行时行为由运行时分析器确定。
还可以查看这篇出色的文章Preconditions, Postconditions: Design by Contract for C#
调用方法之前的条件称为前置条件,如方法名称、参数类型和参数数量等。后置条件是方法末尾的条件,如返回类型为 float 的方法必须返回一个 float 不一个int等