문제

PERL 프로젝트에서 DBC를 사용하고 있으며 소스에서 계약을 확인하는 가장 좋은 방법을 찾으려고 노력하고 있습니다 (예 : 사전/사후 조건, 불변 조건 등).

클래스 :: 계약 Damian Conway에 의해 작성되었으며 현재 C. Garret Goebel에 의해 유지되고 있지만 8 년 동안 만지지 않은 것처럼 보입니다.

내가 사용하고 싶은 것은 것 같습니다 엘크, DBC에 사용할 수있는 기능을 제공 할 수있는 것처럼 보이지만, 누군가가 이것에 대해 방법에 대한 리소스 (기사 등)가 있는지 또는 도움이되는 모듈이 있는지 궁금합니다. 찾을 수 없었습니다.

Perl과 DBC를하는 사람이 있습니까? 나는 단지 무스에게 "점프"하고 나를 위해 무엇을 할 수 있는지 알아야합니까?

도움이 되었습니까?

해결책

Moose는 DBC를 수행 할 수있는 많은 도구 (모든 설탕이 아닌 경우)를 제공합니다. 구체적으로, 당신은 메소드 후크 전, 후 및 주변을 사용할 수 있습니다 (여기에 있습니다 몇 가지 예) 인수와 반환 값을 만들고 싶은 어설 션을 수행하기 위해.

"자신의 DBC Roll"의 대안으로 다음과 같은 모듈을 사용할 수 있습니다. Moosex :: Method :: 서명 또는 무스 렉스 :: 방법 유효성 검사 매개 변수를 돌보기 위해 서브 루틴으로 전달되었습니다. 그러나 이러한 모듈은 DBC가 일반적으로 제공하는 "POST"또는 "변하지 않는"검증을 처리하지 않습니다.

편집하다: 이 질문에 동기를 부여하면서 나는 함께 해킹했습니다 Moosex :: 계약 CPAN에 업로드했습니다. DBC를 직접 사용한 적이 없기 때문에 API에 대한 피드백을 받고 싶습니다.

다른 팁

Moose는 Perl을위한 우수한 OO 시스템이며 Perl의 객체를 코딩하는 모든 사람에게 진심으로 추천합니다. 액세서 또는 생성자가 설정할 때 시행 될 클래스 멤버에 "하위 유형"을 지정할 수 있습니다 (동일한 시스템은 Moose :: Methods 패키지와 함께 사용할 수 있음). 하나 이상의 라이너를 코딩하는 경우 Moose를 사용하십시오.

DBC를 수행하는 것은 Perl5에 가장 적합하지 않을 수 있습니다. 거의 보증을 제공하는 언어로는 어려울 것입니다. 개인적으로, 많은 역동적 인 언어, 특히 PERL에서는 가이드 철학을 건조하고 시험 중심의 개발로 만드는 경향이 있습니다.

나는 또한 무스를 사용하는 것이 좋습니다.

그러나 "대체"로서 하청.

저자를 인용하려면 ....

Sub :: Contract는 Perl의 계약 패러다임으로 프로그래밍의 일부를 구현하는 실용적인 방법을 제공합니다.

Sub :: 계약은 계약 설계 프레임 워크가 아닙니다.

Sub :: 계약은 런타임에 강한 타이핑을 모방하기 위해 서브 루틴 입력 인수 및 반환 값을 쉽게 제한하는 것을 목표로합니다.

클래스 불일치가 필요하지 않은 경우, 일부 프로그램에 좋은 솔루션이라는 다음 Perl Hacks Book 권장 사항을 찾았습니다. 보다 Smart::Comments.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top