実行のコナーセンス

実行のコナーセンスは複数のコンポーネントの実行する順序が重要なときに生じます。よくある例はリソースのロックとアンロックで、コードベース全体のいたるところでロックの確保と解放が同じ順序で実行される必要があります。

実行のコナーセンスは状態マシンをカプセル化するオブジェクトを使う場合にも生じます。状態マシンは特定の状態にあるときに特定の操作だけを許可します。たとえば、Eメールを生成して送信する仮の EmailSender クラスを考えてみましょう。

email = Email()
email.setRecipient("foo@example.comp")
email.setSender("me@mydomain.com")
email.send()
email.setSubject("Hello World")

末尾2行が実行のコナーセンスに当たるトリビアルな例です。setSubject メソッドを send メソッドの後に呼び出すことはできません(エラーにならないとしても何もしません)。この例では結合度の 局所性 は非常に小さいですが、局所性が非常に大きいと発見と修正がずっと難しくなります(たとえば末尾2行が別のスレッドで呼ばれるというシナリオを考えてみてください)。