@634

アサーション(assertion)

Advertisement

不変条件

オブジェクト内部の状態が適切に保たれていることを保証する。

例1。
final class AssertTest{
    private int num; // カードの枚数

    public Test(int n){
        num = n;
    }

    // カードを引くメソッド。引数は枚数
    public void getCard(int n){
        assert trueCheck();

        num -= n;

        // 略

        assert trueCheck();
    }

    private boolean trueCheck(){
        // カードの枚数が負でなければ true
        if(num > 0){
            return true;
        }else{
            return false;
        }
    }
}
上の例ではカードの枚数が必ず1枚以上残っているという前程があるクラスをアサーションでチェックしている。trueCheck() メソッドはアサーションのために追加したクラス。

例2
switch(userID){
    case 1 : // 略
             break;
    case 2 : // 略
             break;
    case 3 : // 略
             break;

    default: assert false;
}
典型的なパターン。上の例では「ユーザは3人で、確実に case の処理に入るハズ」という条件で、userID によって処理を振り分けている。この場合、default 句を追加し、アサーションによる不変条件チェックを行う。

簡単に言えば、絶対に処理の流れが到達しないと仮定されている場所に assert false; を挿入するということ。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール