2013-11-25 65 views
0

我注意到在SONAR中我有一個在我的java代碼中被稱爲IllegalType的違規行爲。我查找了這個,並在Checkstyle中解釋了這一點:SONAR違規IllegalType,爲什麼修復它很重要?

檢查特定類從未用作變量聲明,返回值或參數中的類型。包含缺省不允許抽象類的模式檢查。

理由:有助於減少混凝土類的耦合。另外抽象類應該被認爲是一個方便的基類接口實現,因此它們本身不是類型。

但我真的不明白爲什麼這是我的代碼中的問題。如果任何人都可以用一個例子來解釋我,那麼它可能會很棒!謝謝。

+1

顯示一些代碼...說明:*有助於減少混凝土類的耦合。* – MariuszS

回答

0

並非所有Sonar發現的違規行爲都適用於所有人。支票IllegalTypedocs)會嘗試確保您不使用大多數開發人員認爲以類似Vector(改爲使用ArrayList)的方式「破碎」的類。

其他類不應該用作返回類型。總是返回List而不是ArrayList,Set而不是HashSet,Map而不是HashMap - 這樣,代碼的使用者就不知道任何關於實現的不必要細節。如果你發現你需要在方法中用替換爲TreeMap(反之亦然),如果你不需要改變所有的地方以及調用這個方法的地方,那將更加簡單。

一般來說,檢查不是這樣的問題(您的代碼有效),但修復這些問題將使您的代碼在未來更易於維護。

1

Aaron Digulla在他的評論中說的是一個很好的做法。然而,我也發現這個IllegalType問題與我自己的抽象類(而不是接口),這似乎對我來說不是很清楚。我理解使用intefaces類的好處,並且我也明白抽象類是部分類(比接口更類),但我沒有看到這個規則的好處,因爲我可以找到我可以返回一個具體的類(不是抽象的),它是我實際返回的超類。

+0

我的問題更多是爲了Manuelarte在他的評論中所談論的。 – JinchaKku