2009-05-15 7 views
1

GWT를 연주하고 있습니다. 기본 인수 검사를 찾고 있습니다. 나는 불변성이나 결과 보장을 요구하지 않습니다. 주제에 대한 베스트 프랙티스에 관심이있는 부분.인수 검사 또는 Java (GWT)의 계약 별 설계. 어디서 시작하나요?

예를 들어, C에서 나는이 옵션 중 하나를 사용 번호 :

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

나를 위해 최고의 장소는 무엇을 시작하는 것입니다?

이제 알았습니다. wikipedia page of Design by Contract에 따르면

  1. Validate method arguments
  2. Programming With Assertions

답변

2
나는 일반적으로 너무 조쉬 블로흐 Effective Java의 권고에 따라, 자신이 그것을 할

:

if (arg == null) throw new NullPointerException("arg cannot be null"); 

또는

if (arg < 0) throw new IllegalArgumentException("arg must be positive"); 
내가보기 엔 Effective Java의 사본을 받고 권하고 싶습니다

당신이 만약 돈 이미 가지고있다.

+0

대단히 감사합니다, 그냥 주문했습니다. 효과적인 Java, 내부 코드에 대해 "assert arg <0"에 대해 어떻게 생각합니까? –

+0

Java 1.4 어설 션 기능을 사용하는 습관을 결코 습득하지 못했기 때문에 나는 그 사람에 대한 의견을 말할 수있는 좋은 사람이 아닐 것이라고 생각합니다. 실제로 모범 사례를 실제로 찾아 내지 못했습니다. 그렇다면 효과적인 Java는 그 점에 대해 어느 시점에서 이야기합니다. :) –

0

는, 자바이 방법론에 대한 인기 도구는 다음과 같습니다

iContract2, Contract4J, jContractor, Jcontract, C4J, CodePro Analytix, STclass, AspectJ를 사용하는 OVal, JML (Java Modeling Language), Spring 프레임 워크 용 SpringContract, AspectJ를 사용하는 Custos, AspectJ를 사용하는 JavaDbC, Java 확장을 사용하는 JavaTESK .

그 중 하나를 읽는 것이 좋습니다.

개인적인 경험이 없지만 Pragmatic Programmer는 원본 iContract에 대한 좋은 점을 밝히고 시작할 수있는 좋은 곳이 될 수 있습니다. 만일 Expression1의 부울 결과 및 expression2의 값이 테스트입니다

assert Expression1;
또는 assert Expression1 : Expression2 ;


(:

당신은 항상 내장 주장 Javas를 사용하여 직접 그 일을 시도 할 수 선택 과목). 그것을 밖으로 시도하십시오.

+0

jContractor를 빠르게 살펴보고 너무 무거울 것이라고 생각합니다. 이런 이유로 나는 다른 사람이 찾아내는 expirience를 물색하고 요구하기에 급강하 멈췄다. –

0

인수 검사 만하려는 경우 예외가있는 간단한 검사가 가장 좋은 솔루션이어야합니다.

예외는 간단한 어설 션보다 처리를 포착하기위한 더 나은 솔루션을 제공합니다.

그런 시나리오에서 계약 별 솔루션은 과도하게 과잉입니다.