2012-08-30 219 views
64

如何確定如何調用類XHelper或XUtils?Helper和Utility類有什麼區別?

在我的腦海:

Helper類,是一類可實例化,做一些業務工作

utils的類,是在執行小和重複操作的靜態類(實用程序類ArrayUtils或Apache的IOUtils的示例)

+3

「商業工作」是這裏的關鍵區別。我發現將'Utils'用於可以在組織或其他組織的任何地方使用的靜態類是一個有用的慣例。一個'Helper'類具有可以在項目中重用的通用代碼,並且在項目中具有依賴關係。當然,沒有普遍接受的規則,但我覺得這很有用。 –

回答

57

有很多使用的命名風格。我建議Utils只是因爲它更常見。

工具類被理解爲只有靜態方法並且是無狀態的。你不會創建這樣一個類的實例。

幫助程序可以是實用程序類,也可以是有狀態的或需要創建實例。如果可能,我會避免這種情況。

如果您可以使名稱更具體。例如如果它的排序方法,使其XSorter

對於數組,你可以找到幫手類,如

Array 
Arrays 
ArrayUtil 
ArrayUtils 
ArrayHelper 

BTW短手的實用程序類是沒有實例

enum XUtils {; 
    static methods here 
} 

如果枚舉你需要實現一個接口,我會使用一個無狀態的Singleton。

enum XHelper implements RequiredInterface { 
    INSTANCE; 
    // no instance fields. 
} 
+0

我在這篇文章http://stackoverflow.com/a/2135797/787698,這Xutils是一個靜態類沒有依賴關係。你在想什麼? – jakcam

+0

@jakcam有趣的一點。助手可能是有狀態的並需要一個實例。如果可能的話,我會使用無狀態和無實例的實用程序類。 –

+0

你對Xutils有什麼瞭解是一個靜態類,有**沒有依賴關係**? – jakcam

7

一般情況下?這完全是任意的。這沒有規則。

1

對此沒有最終答案。找出一個命名方案並堅持下去。命名你的軟件包和類是軟件架構的重要組成部分,沒有人可以將這個決定從你身邊拿走。

我個人比較喜歡XHelper,但我更多地在外部代碼中看到XUtils。

我也很喜歡「複數」的命名方案,您將在JDK找到既和Guava

如果與Collection對象的一類交易,這就是所謂的Collections

陣列>陣列(JDK)
名單>列表(番石榴)
地圖>地圖(番石榴)