契约式编程 - D语言教程
在D编程中的契约编程是专注于提供错误处理一个简单易懂的手段。在D编程契约编程是由三种类型的代码块来实现:
body 块
in 块
out 块
body 块
Body块包含执行的实际功能代码。 IN和OUT块是可选的而身体块是强制性的。一个简单的语法如下所示。
return_type function_name(function_params)
in
{
// in block
}
out (result)
{
// in block
}
body
{
// actual function block
}
块中预条件
块是用于简单的预条件验证输入参数是否是可以接受的,并在可以由代码处理范围。在块中的好处是,所有的进入条件可以保持在一起,并独立于该函数的实际主体。一个简单的先决条件用于验证密码,它的最小长度如下所示。
import std.stdio;
import std.string;
bool isValid(string password)
in
{
assert(password.length>=5);
}
body
{
// other conditions
return true;
}
void main()
{
writeln(isValid("password"));
}
当上面的代码被编译并执行,它在读取上一节中创建的文件,并产生以下结果:
true
外部块后置条件
该列块从函数返回值。它验证返回值是在预期范围。显示包含在国内外享有一个简单的例子如下,转换个月,一年一个组合的十进制年龄的形式。
import std.stdio;
import std.string;
double getAge(double months,double years)
in
{
assert(months >= 0);
assert(months <= 12);
}
out (result)
{
assert(result>=years);
}
body
{
return years + months/12;
}
void main ()
{
writeln(getAge(10,12));
}
当上面的代码被编译并执行,它在读取上一节中创建的文件,并产生以下结果:
12.8333