2011-04-19 2 views
1

나는 Pragmatic Programer를 읽고 있었고, Effel이 DBC 전후 조건과 Java, C#, C++가 어떻게 적용되는지 DBC에 관한 섹션에서 설명했다. 마음에 와서 가장 먼저 와서는 AOP를 사용했다. (그래서 나는 DBC와 AOP 만 이전 링크가 올랐다.)DBC (계약에 의한 설계)와 AOP (Aspect oriented programming)

그렇다면 AOP를 사용하여 Java 또는 C#으로 DBC를 구현하는 다른 프로그램 생각은 무엇일까요?

답변

3

나는 DBC 아이디어가 마음에 들지만, AOP는 내 의견으로는이 작업에서 잘못된 무기이다.

측면은 특별한 인프라 계약을 시행

측면이 실제로 버그를 도입하는 대신 그들을 방지하는 위험, 생산 코드를 실행해야 빌드 프로세스 복잡 필요합니다.

측면은 실제로 DBC의 주요 목표 인 컴파일 타임 보안을 제공하지 않습니다.

C#에 대해 모르지만 ther은 Java 토지에서 사용할 수있는 성숙한 DBC 옵션이 아닌 것 같습니다. 따라서 계약으로 계약을 이행하는 경향이 있습니다. 비록 내가 자주해야하지는 않지만

+1

실제로 DBC는 런타임 또는 컴파일시에 시행 할 수 있습니다. 컴파일 시간에 그것은 정말로 까다로운 일입니다. 왜냐하면 여러분은 완전 정리 정리를 필요로하고 인간 수학자의 도움을 받아 계약이 만족 스럽다는 것을 증명할 수 있기 때문입니다. 따라서 AOP를 직접 사용하지는 않지만 런타임 DBC 적용을위한 올바른 접근 방법이라고 생각합니다. 추가 복잡성이 가치가 있는지 확신하지 못합니다. –

2

C# (실제로 .NET)은 Code Contracts 프레임 워크와 툴링을 사용하여 DBC를 지원합니다.

사전, 사후 및 불변 조건을 선언하는 API와 런타임 검사, 정적 검사 및 문서 작성 기능을 제공합니다.

프레임 워크는 내장되어 .NET 프레임 워크에 내가 정말 밖으로 그것을 살 수 있음에 아이디어를 더 libery을 찾고 있지 않다거나 사용할 수 없습니다 4.

관련 문제