계약 프로그래밍

계약 프로그래밍 (Contract Programming)

계약(contract)은 D 언어에 내장된 방식을 사용해서, 프로그램이 특정 지점에 도달했을 때 반드시 성립해야 하는 조건을 명시하는 기능이에요. 이 장에서는 계약 프로그래밍이 무엇인지, 그리고 D가 어떤 계약들을 제공하는지 전반을 살펴봅니다.

출처: https://dlang.org/spec/contracts.html

본문

계약(contract)이란 런타임 실행 흐름이 해당 계약에 도달했을 때 반드시 참(true)이어야 하는 조건을 명시할 수 있게 해주는 기능이에요. 만약 어떤 계약이 참이 아니라면, 그 프로그램은 정의되지 않은 상태(undefined state)에 들어간 것으로 간주됩니다.

근거(Rationale): 언어에 계약 지원을 내장하면 다음과 같은 이점이 생겨요.

  • 계약들에 일관된 모양과 느낌을 부여합니다.
  • 도구(tool) 지원이 가능해집니다.
  • 구현체가 계약에서 수집한 정보를 활용해 더 나은 코드를 생성할 수 있습니다.
  • 계약의 관리와 강제(enforcement)가 더 쉬워집니다.
  • 계약의 상속(inheritance)을 처리할 수 있습니다.

Assert 계약 (Assert Contract)

AssertExpression 장을 참고하세요.

전제 조건과 사후 조건 (Pre and Post Contracts)

전제 조건과 사후 조건도 별도 장에서 다룹니다.

불변식 (Invariants)

구조체 불변식클래스 불변식 장을 참고하세요.

참고 자료 (References)

더 알아보기 (Learn more)