契約の書き方
2006/04/13
契約プログラミング(DbC)を実装するプログラム言語は、Eiffel、Digital
Mars C++ CompilerとD言語などです。これらの言語はいずれも、現在決してポピュラーとは言えません。しかし、これらの言語で書かれた
DbC
を読むことによって、契約を書く方法や DbC
の概念を理解することが容易になるでしょう。
D言語公式サイトのサンプルコードは、以下のようになっています:
long
square_root(long
x)
in
{
assert(x
>=
0);
}
out
(result)
{
assert((result
*
result)
== x);
}
body
{
return
math.sqrt(x);
}
in
は、事前条件です。out
は事後条件で、関数の戻り値である result
変数を得ることができます。
それぞれの条件チェックには assert()
を使用します。D言語の assert()
は、例外 AssertException
をスローするので、Cの assert()
より役に立つと主張されています。例外であれば、キャッチした後、どのようにも取り扱いができるからです。