precondition postcondition

푸드테크·2022년 7월 11일
2

precondition과 postcondition 대해 이해 해보도록 하는 포스팅을 작성하려고 합니다.

precondition : 사전 조건이란 뜻으로 받은 메시지의 값을 스스로 검증하는걸 뜻합니다.
postcondition : 사후 조건이란 뜻으로 돌려줄 메시지의 값을 스스로 검증하는걸 뜻합니다.

예제를 위하여 지갑에 대한 계산을 하는 코드를 만들었다.


package com.company;

public class Wallet {

    private Integer money;

    public Wallet(final Integer money) {
        this.money = money;
    }

    public void myWalletUpdate(final Calculator calculator, final Integer price) {
        this.money = calculator.calFee(money, price);
    }

    public Integer getMoney() {
        return money;
    }
}

package com.company;

public interface Calculator {
    int calFee(final Integer a, final Integer b);
}

package com.company;

public class PlusCalculator implements Calculator {
    @Override
    public int calFee(final Integer a, final Integer b) {
        return a + b;
    }
}

MinusCalculator는 생략하겠다.

별거 없는 소스지만 java는 null을 모든곳에 허용할수 있다는게 문제이다.

즉 final Calculator calculator, final Integer price 이 두 값에 대해서는 precondition을 해줘야 프로그램의 안정성을 확보 할수 있다.

그럼 precondition으로 null 체크를 해줫으니 이 프로그램은 완벽한가?
아니다 우리의 현실 지갑은 음수가 될수 없다.

이때 필요한것이 postcondition 이다.

파란색 부분으로 값을 먼저 불러와 값이 정상적인지 체크해준다음에 처리 해줌으로써 우리 지갑이 음수가 될수 없게 만들어 줬다.

이런 precondition이나 postcondition 이 없다면 프로그램은 언제나 정상작동 하지 않을 위험을 가지고 있다고 볼수 있다.

profile
푸드 테크 기술 블로그

1개의 댓글

comment-user-thumbnail
2022년 7월 13일

유효성 검사의 기준을 어떻게 잡아야할지 생각해볼 수 있는 좋은글이였습니다~

답글 달기