2012-11-19 47 views
1

假設您關心的是代碼的清晰性,並希望確保您的API的用戶對於如何創建對象非常清楚。你讓他們做這樣的事情IDE插件檢查方法邊界,它存在嗎?

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

其中每一類DayOfMonthHourOfDay幾乎是彼此相同的,某種形式的保值。

現在,當您需要使用該值時,使用Java的Calendar應該是非法的,我們將得到某種RunTimeException。大。

現在..是否有可能爲我們建立最小,最大邊界在我們的IDE(EclipseIntellij),這將提醒我們,價值,我們即將要發送到的方法會導致錯誤?

是否有一個插件和一個可以一起工作的註釋來允許這樣的警告?

沿着@Boundaries {low=1, high=31}和IDE實際認識到這一點會很好。

請讓我知道如果這樣的事情存在。

+0

我建議約束的值而不是抱怨,因爲有人試圖將您的Int32參數設置爲0(它會混淆開發人員)。如果Java提供類似於.NET的'Enum'的東西,那聽起來就像是一個工作。 – Alex

+0

我在代碼搜索中看到了一個名爲@IntRange(min = 1,max = 100000)的註解。但是,我不知道,如果它滿足你的需求。 – Bananeweizen

回答

2

看一看Contracts for Java。它確實有一個基本的Eclipse集成。

interface Time { 
    ... 

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

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

    ... 
} 
+0

我喜歡它。謝謝! – JAM