akon2.00βのよっぱらいの戯言

色しょく是食、食しょく是色 当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

ルールと契約

そもそも「契約による設計」について書きたいと思ったのは、「ルール駆動設計」と接点を明らかにしたかったからである。とはいえ、言葉遊びをする気はない。ここでは、ルールとは法律のような大域的なもので、契約もルールに含まれる。契約とは当事者間の局所的なものと定義する。すると、ルール駆動設計は、ルールを契約に具現化することであると定義できる。なお、ローカルルールをアスペクトで記述するかどうかは別の問題である。

以下のルールがあるとする。
特別配偶者控除は、所得金額が1000万円以下、かつ配偶者の所得金額が76万円未満の場合、別表に基づいて控除する。

当事者が明確でないのでこれは契約ではない。そこで、クライアント(メソッドを呼び出す側)とメソッドと当事者を明確にすると契約になる。つまり、、クライアントが「所得金額が1000万円以下、かつ配偶者の所得金額が76万円未満」という条件を守ってメソッドを呼び出せば、メソッドは必ずクライアントに特別配偶者控除額を返すという契約を守る。

実際、このようにルールと契約を識別する必要はない。あえて識別するとこれまで「ルール駆動設計」としてきたが、実は「分析」で、契約は「設計」にあたる。