계약 프로그래밍

계약 프로그래밍 (Contract Programming)

계약(contract)을 통해 런타임 실행 흐름이 계약에 도달했을 때 반드시 성립해야 하는 조건을 명시할 수 있어요. 만약 계약이 성립하지 않으면 프로그램이 정의되지 않은 상태(undefined state)에 들어간 것으로 간주해요.

출처: Contract Programming

본문

이론적 근거(Rationale):

언어에 계약 지원을 내장하면 다음과 같은 이점이 생겨요.

  • 계약에 일관된 모양과 느낌을 제공해 줘요
  • 도구 지원(tool support)을 제공해 줘요
  • 구현이 계약에서 수집한 정보를 이용해 더 나은 코드를 생성할 수 있어요
  • 계약을 더 쉽게 관리하고 강제할 수 있어요
  • 계약 상속(contract inheritance)을 처리해 줘요

Assert 계약 (Assert Contract)

AssertExpression을 참고하세요.

전제/후제 계약 (Pre and Post Contracts)

다음을 참고하세요.

불변 조건 (Invariants)

Struct InvariantsClass Invariants를 참고하세요.

참고 자료 (References)

더 알아보기