在Java項目中公開所有類是否是最佳實踐?我注意到,在所有與我合作過的Java項目中,都只有公共類。具有類可見性的最佳實踐
回答
這不是一個指導方針,沒有。
信息隱藏原理告訴我們只暴露了要求的,只是爲了儘量減少耦合。例如,如果一個類允許您更輕鬆地處理單獨類中的邏輯,並且僅被該類使用,則沒有理由公開它,也不應該公開它。
這取決於,對於頂級課程,如果您希望其他課程在不同的包裝中查看您的課程,您應該使用mark it public
。如果你只想讓班級在同一個包中查看你的課mark it default
(無修飾)。
所以,你的問題是真的,所有的頂級課程都應該公開嗎?我認爲它歸結爲您在項目中使用的包訪問的用法。前段時間,This question與此相關。
通常大多數類都是公開的,但有些情況下您可能也想使用默認或私有作用域。
使用默認範圍的類只能由同一包中的其他類訪問。例如,在助手類的情況下,隨着代碼變得越來越多,以這種方式限制它們的使用通常是一種好的做法。encapsulated。出於同樣的原因,私人範圍通常可以用於內部類。
不,它不是。有很多類與其他訪問說明符甚至匿名。例如,您可以編寫私人或匿名類,這些類可以註冊到聽衆,如 'ActionListener'和'ItemListener'。就像那樣,爲了各種目的,我們寫很多沒有公共說明符的類。它確實有助於將你的工作分解成幾部分。
但是,在Java中,通常每個源文件都包含一個公共類。這是因爲如果源文件的名稱是'Reader.java',那麼您不能在該源文件中爲類'Reader'提供專用或其他訪問說明符。它必須是公開的或默認的。除此之外,沒有其他類可以使用訪問說明符'public'而不是'Reader'類。
其他的事情是,私人的,受保護的和類別的其他類型(默認情況下)不能作爲「獨立班級」寫入源文件。舉個例子,下面是一個錯誤
Check.java
private class Check
{
}
簡單的回答你的問題是 「不!」
稍微複雜一點是,如果需要由自己的軟件包以外的其他類使用,則只應該公開一個類。但是,如果像我一樣,爲了可讀性而打斷了你的許多包,那麼如果你的類需要被公開才能被使用,那麼情況往往如此。
雖然你的問題很簡單,但它的本質並不簡單。很大程度上取決於你寫作的代碼種類。它正在編寫一個圖書館,然後在外部使用,這可能是你的議程中很高的。在一個應用程序中更少。
我發現我更喜歡公開的方法。我嘗試設計重用,因爲它使我的選擇保持開放,使我由於重用問題而更仔細地考慮了我的實現,並且導致了更好的代碼。但它確實是課程的馬匹,你是這個等式中最大的變量。
這絕對不是最佳實踐。你看到它,因爲大多數程序員不知道頂級類不必公開。
理想情況下,一個軟件包不僅僅是一種組織類的方法。沒有最小或最大數量的類屬於一個包中;相反,只有在需要包級別的類和/或成員時才應創建子包。 Java API可以做到這一點,並且由於從Sun/Oracle發佈的javadoc是爲受保護級別的類和成員生成的,所以某些程序包可能看起來很稀疏,即使這樣看起來也不是這樣。
例如,javax.swing.colorchooser軟件包似乎只有四個類,但它實際上有17個(實際數可能會因Java版本而異)。四個是公開的;其餘的僅用於JColorChooser內部。
我發現內部類變得太大而無法作爲內部類輕鬆維護,通常是非公共頂級類的良好選擇。
- 1. Java線程可見性 - 沒有顯式同步的最佳可見性實踐
- 2. PHP翻譯類 - 最佳實踐意見
- 3. 類最佳實踐
- 4. 可訪問性最佳實踐
- 5. Silverlight - 通知可用性最佳實踐
- 6. WinForms可用性和最佳實踐
- 7. 最佳實踐常見的進口
- 8. JSON屬性最佳實踐
- 9. JavaScript類最佳實踐?
- 10. ASP.NET類庫最佳實踐
- 11. 需要一些最佳實踐意見
- 12. 最佳實踐
- 13. 最佳實踐
- 14. 最佳實踐
- 15. 最佳實踐:
- 16. 最佳實踐
- 17. 最佳實踐
- 18. 最佳實踐
- 19. 最佳實踐
- 20. 最佳實踐
- 21. 最佳實踐
- 22. 最佳實踐
- 23. 最佳實踐
- 24. 最佳實踐
- 25. 最佳實踐
- 26. 最佳實踐
- 27. 最佳實踐
- 28. 最佳實踐
- 29. 最佳實踐
- 30. 最佳實踐{{}}