최근에 Design by Contract (DbC)를 발견했으며 코드를 작성하는 데 매우 흥미로운 방법이라고 생각합니다. 무엇보다도 다음을 제공하는 것 같습니다.
- 더 나은 문서. 계약서가 문서이므로 계약서가 구식이 될 수 없습니다. 또한 계약은 루틴의 기능을 정확하게 지정하므로 재사용을 지원하는 데 도움이됩니다.
- 더 간단한 디버깅. 계약이 실패하는 순간 프로그램 실행이 중지되므로 오류가 전파 될 수 없으며 위반 된 특정 어설 션이 강조 표시 될 수 있습니다. 이것은 개발 및 유지 보수 동안 지원을 제공합니다.
- 더 나은 정적 분석. DbC는 기본적으로 Hoare 로직의 구현 일 뿐이며 동일한 원칙이 적용되어야합니다.
이에 비해 비용은 다소 작은 것 같습니다.
- 여분의 손가락 타이핑. 계약은 철자가되어야하기 때문에.
- 계약서 작성에 익숙해 지려면 약간의 교육이 필요합니다.
이제 파이썬에 대해 잘 알고 있기 때문에 실제로는 전제 조건을 작성하는 것이 가능하며 (부적절한 입력에 대해 예외를 던짐) 어설 션을 사용하여 특정 사후 조건을 다시 테스트 할 수도 있음을 알고 있습니다. 그러나 궁극적으로 비피 토닉으로 간주되는 추가 마법 없이는 '오래된'또는 '결과'와 같은 특정 기능을 시뮬레이션 할 수 없습니다. (또한 지원을 제공하는 라이브러리가 몇 개 있지만 궁극적으로 대부분의 개발자가하지 않는 것처럼 사용하는 것이 좋지 않은 느낌이 들었습니다.) 나는 다른 모든 언어에서 비슷한 문제라고 가정합니다 (물론 제외) , 에펠).
저의 직감에 따르면 지원 부족이 관행을 거부 한 결과이지만 온라인 검색은 유익하지 않았습니다. 현대의 대부분의 언어가 왜 그렇게 적은 지원을 제공하지 않는지 누군가가 명확히 할 수 있는지 궁금합니다. DbC에 결함이 있거나 지나치게 비쌉니까? 아니면 Extreme Programming 및 기타 방법론으로 인해 더 이상 사용되지 않습니까?