契約の書き方
契約プログラミング(DbC)を実装するプログラム言語は、EiffelDigital 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() より役に立つと主張されています。例外であれば、キャッチした後、どのようにも取り扱いができるからです。
|