D-계약 프로그래밍

D 프로그래밍의 계약 프로그래밍은 간단하고 이해하기 쉬운 오류 처리 수단을 제공하는 데 중점을 둡니다. D의 계약 프로그래밍은 세 가지 유형의 코드 블록으로 구현됩니다.

  • 바디 블록
  • 블록에서
  • 아웃 블록

D의 바디 블록

본문 블록에는 실행의 실제 기능 코드가 포함되어 있습니다. in 및 out 블록은 선택 사항이며 본문 블록은 필수입니다. 다음은 간단한 구문입니다.

return_type function_name(function_params) 
in { 
   // in block 
} 

out (result) { 
   // in block 
}
 
body { 
   // actual function block 
}

D의 사전 조건에 대한 블록 내

인 블록은 입력 매개 변수가 허용 가능한지 그리고 코드로 처리 할 수있는 범위 내에 있는지 확인하는 간단한 사전 조건을위한 것입니다. in 블록의 이점은 모든 입력 조건을 함께 유지하고 함수의 실제 본문과 분리 할 수 ​​있다는 것입니다. 최소 길이에 대한 암호 유효성 검사를위한 간단한 전제 조건은 다음과 같습니다.

import std.stdio; 
import std.string;
  
bool isValid(string password) 
in { 
   assert(password.length>=5); 
}
 
body { 
   // other conditions 
   return true; 
}
  
void main() { 
   writeln(isValid("password")); 
}

위의 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음과 같은 결과를 생성합니다.

true

D의 포스트 조건에 대한 아웃 블록

out 블록은 함수의 반환 값을 처리합니다. 반환 값이 예상 범위에 있는지 확인합니다. in과 out을 모두 포함하는 간단한 예는 월, 연도를 결합 된 십진 연령 형식으로 변환하는 아래에 나와 있습니다.

import std.stdio;
import std.string;

double getAge(double months,double years) 
in { 
   assert(months >= 0); 
   assert(months <= 12); 
}
 
out (result) { 
   assert(result>=years); 
} 

body { 
   return years + months/12; 
} 
 
void main () { 
   writeln(getAge(10,12)); 
}

위의 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음과 같은 결과를 생성합니다.

12.8333