계약 프로그래밍
계약 프로그래밍 (Contract Programming)
계약(contract)을 통해 런타임 실행 흐름이 계약에 도달했을 때 반드시 성립해야 하는 조건을 명시할 수 있어요. 만약 계약이 성립하지 않으면 프로그램이 정의되지 않은 상태(undefined state)에 들어간 것으로 간주해요.
본문
이론적 근거(Rationale):
언어에 계약 지원을 내장하면 다음과 같은 이점이 생겨요.
- 계약에 일관된 모양과 느낌을 제공해 줘요
- 도구 지원(tool support)을 제공해 줘요
- 구현이 계약에서 수집한 정보를 이용해 더 나은 코드를 생성할 수 있어요
- 계약을 더 쉽게 관리하고 강제할 수 있어요
- 계약 상속(contract inheritance)을 처리해 줘요
Assert 계약 (Assert Contract)
AssertExpression을 참고하세요.
전제/후제 계약 (Pre and Post Contracts)
다음을 참고하세요.
불변 조건 (Invariants)
Struct Invariants와 Class Invariants를 참고하세요.
참고 자료 (References)
더 알아보기
- Template Mixins — 템플릿 믹스인
- Conditional Compilation — 조건부 컴파일