在哪里放非公开课?

时间:2011-06-30 09:50:20

标签: java coding-style

假设我有一个Java类 A ,这需要一个帮助类 B 。该助手类仅用于 A ,没有其他用途。此外, B 不需要以任何方式使用 A (不要调用方法或访问字段)。

所以,问题是:在哪里放 B

有以下选项:

  1. 静态嵌套类。在我看来,它只是使代码不那么清晰(更多的缩进等)。

    public class A {
        ...
        private static class B { ... }
    }
    
  2. 同一来源的非公开课。我喜欢这个选项。

    public class A {
        ...            
    }
    
    class B { 
        ... 
    }
    
  3. 单独来源中的非公开类。看起来这个选项有一点开销。

    // A.java
    public class A {
        ...            
    }
    
    // B.java
    class B { 
        ... 
    }
    
  4. 目前,我更喜欢第二种选择。你对此有什么想法?什么是最佳做法? 是否有任何权威来源?

3 个答案:

答案 0 :(得分:5)

我强烈投票支持选项(1)。我们的想法是,类B只需要类A,而选项(1)是明确表达意图的唯一选择:类B是类A的一部分}。

答案 1 :(得分:1)

it有帮助吗?

没有严重的缺点,但人们当然可以找到至少一些,包括:

  • 难以理解 - 特别是对于那些可能难以编码,增强和维护的非体验程序员。
  • 更多的类 - 它肯定会增加应用程序使用的类的总数。对于加载到内存中的每个类,JVM为它创建一个Class类型的对象。可能还有一些其他例行任务,JVM可能需要为所有额外的类执行这些任务。如果应用程序使用多个嵌套/内部类(可能是由于设计不佳),这可能会导致性能稍慢。
  • 工具/ IDE的有限支持 - 嵌套类与大多数工具和IDE中的顶级类不同。这有时可能会激怒开发人员。

答案 2 :(得分:1)

您可以在A.Better封装中使用静态嵌套类,因为嵌套类是一种逻辑分组仅在一个地方使用的类的方法。你的助手类只包含字段吗?