我最近遇到了一个编码标准,声称你永远不应该在 Java 中使用公共内部枚举/类。这是我第一次遇到这种约定,一直无法找到令人满意的解释。
我理解为什么应该避免公共内部类,但是出于什么原因你永远不会使用公共嵌套枚举?或者,为什么这是一个不好的约定?
我最近遇到了一个编码标准,声称你永远不应该在 Java 中使用公共内部枚举/类。这是我第一次遇到这种约定,一直无法找到令人满意的解释。
我理解为什么应该避免公共内部类,但是出于什么原因你永远不会使用公共嵌套枚举?或者,为什么这是一个不好的约定?
免责声明: 以下不是硬性规定。这些只是我的意见和个人喜好。我个人发现它使我的代码更易于阅读和维护。
首先一个问题。你是从哪里看到这个建议的?他们有没有提供任何理由?
根据我的经验,我通常使用私有嵌套枚举来增强代码的可读性和可维护性。当您执行与另一个系统的集成并且您必须发送特定的字符串或数字时,这尤其会发挥作用。我发现使用枚举使事情更容易阅读和维护。在这种特定情况下,枚举传递的信息仅限于类的范围(即,在类之外没有任何意义,其他人也不应该需要它)。
我想不出一个明确的理由来说明为什么公共内部枚举是一种不好的做法。但以下是我(通常)不使用它们的原因:
ThirdPartyResponseCodes.Success
比眼睛更容易ThirdPartyIntegrationInterface.ThirdPartyResponseCodes.Success
。没有理由不能适当地命名枚举以提供上下文,从而使其成为独立的枚举。原因可能是它使这些枚举难以在声明它们的类之外使用,因为您必须使用封闭类的名称来限定它们。当然,任何公共内部类也是如此。并且不确定我是否同意它——当然不是一个硬性规定。
如果它没有包含解释,您将不得不询问编写该编码标准的人。但是,您的这种说法有些令人困惑:
我理解为什么应该避免公共内部类,但是出于什么原因你永远不会使用公共嵌套枚举?
为什么你认为应该避免公共内部类?为什么这个原因不适用于枚举?