2012-11-19 4 views
1

코드의 명확성에 관심이 있고 API의 사용자가 객체 생성 방법에 대해 분명히하고 싶다고 가정 해 보겠습니다. 당신은 그들 각 클래스 DayOfMonth, HourOfDay 거의 동일 서로 어떤 종류의 값을 저장하는 것입니다메소드 경계를 검사하는 IDE 플러그인은 존재합니까?

new MomentInTime(new DayOfMonth(15), new HourOfDay(10), new MinuteOfHour(49), new SecondOfMinute(0));

등의 작업을 수행합니다.

이제 Java의 Calendar을 사용하여 값을 사용하게되면 값이 잘못된 것이므로 RunTimeException이 발생합니다. 큰.

지금 우리 IDE에서 (Eclipse 또는 Intellij) Min, Max 경계를 설정하면 메서드에 보낼 값이 오류가 될 것이라고 경고 할 수 있습니까?

함께 경고 메시지를 표시하는 플러그인과 주석이 있습니까?

@Boundaries {low=1, high=31}의 줄을 따라 뭔가 실제로 IDE를 인식하는 것은 좋을 것입니다.

이런 경우 알려주십시오.

+0

누군가 Int32 매개 변수를 0으로 설정하려고 시도하기 때문에 값을 제한하는 것이 좋습니다 (개발자가 혼란 스러울 것입니다). Java가 .NET의'Enum'과 비슷한 것을 제공한다면, Java는 그 일을하는 것처럼 들립니다. – Alex

+0

코드 검색에서 @IntRange (min = 1, max = 100000)라는 주석을 보았습니다. 그러나, 나는 그것이 당신이 필요로하는 것을한다면, 단서가 없습니다. – Bananeweizen

답변

2

Contracts for Java을 살펴보십시오. 이클립스에는 기본적인 통합 기능이있다.

interface Time { 
    ... 

    @Ensures({ 
    "result >= 0", 
    "result <= 23" 
    }) 
    int getHour(); 

    @Requires({ 
    "h >= 0", 
    "h <= 23" 
    }) 
    @Ensures("getHour() == h") 
    void setHour(int h); 

    ... 
} 
+0

나는 그것을 좋아한다. 감사! – JAM