我有一個包含5個Java包的項目。它們都包含具有幻數和硬編碼字符串的類,我期望創建常量。我想知道什麼是最佳做法。我應該爲程序中的所有類都可以導入的所有常量創建一個常量類嗎?或者將常量分成多個較小的文件會更有效率嗎?Java包含的常量
1
A
回答
1
根據最佳實踐,請參閱Principle of Least Privilege。
你應該提取內聯硬編碼常量,但你應該而不是把所有的常量放到一個整體類。相反,將常量分成上下文相應的類(「多個較小的文件」),並僅將這些類保留在包級別,以便它們需要被正確引用。
如果該值僅適用於一個特定類別(又名private static final
),則不需要將此值提升出課程。如果僅僅在一個地方引用它,它只會創造更多的工作來將它保留在其他地方。
如果該值的行爲像全局變量或需要在許多不同的類中訪問(又名public static final
),將相關值提取到單獨的類中是有意義的,但可能是您應該調查的代碼異味。
由於您使用的是軟件包,因此請考慮使用軟件包專用(static final
)將您的配置值隔離到需要它的單個軟件包。
考慮使用配置/屬性文件來注入值,而不是在類中顯式硬編碼它們。根據您的需要,您可以使用簡單的Java屬性,或者有許多庫/框架可以幫助您處理屬性,例如Spring。
相關問題
- 1. 在Java中包含大量常量的最佳方法?
- 2. 包含常量和變量的路徑
- 3. 在pod中包含常量
- 4. Java ArrayList包含數量?
- 5. 包含std :: string的常量的類
- 6. 強制子類包含抽象java類中的常量
- 7. TSQL中的常量和包含文件
- 8. 只包含常量的PHP類
- 9. Enum中包含的打印常量
- 10. 包含常量和變量但不包含文字或類的詞?
- 11. Java - 包含變量的抽象類?
- 12. Java:接口是否可以包含在其中定義的常量變量?
- 13. 使用常量指針避免包含
- 14. FieldOperator類不包含靜態常量
- 15. 如何在類中包含「空」常量
- 16. Java - 變量檢查是否包含
- 17. 如何包含模塊的常量和變量?
- 18. 如何訪問名稱包含在變量中的Perl常量?
- 19. 如何創建將包含所有Java類的常量的HashMap或Arraylist
- 20. 將包含換行符的Java變量轉換爲javascript變量
- 21. Swig java C++傳遞包含C++結構的向量向量
- 22. 包含java-問題
- 23. Netbeans Java庫包含
- 24. 包含引號java
- 25. Java集幷包含
- 26. 的std :: auto_ptr的包含對象的矢量行爲異常
- 27. 其中包含的Java
- 28. 的Java包含HashMap與bukkit
- 29. 包含信息的Java ActionListeners
- 30. 的Java對象包含
更高效的是什麼?運行速度? – Kayaman
恕我直言,你不應該混合與同一類中的不同關注有關的常量。 –
這些常量或魔術值中的任何一個是否根據代碼所處的環境而改變?例如,一個dev連接字符串vs prod連接字符串? – oooyaya