Java - 构造函数中的私有初始化程序或初始化?

时间:2013-05-17 04:54:58

标签: java initialization conventions

为什么Swing Tutorials中的一些示例类(抱歉,我不记得哪些;我可能错了,但我知道我在某处看到了这个)使用这样的私有方法?:

public MyClass{
    public MyClass(){
        .
        .
        .   
        initializeComponents();
        .
        .
        .
    }
    private void initializeComponents(){
        //initializing
    }
}

这是正确的约定,还是这个?:

public MyClass{
    public MyClass(){
        .
        .
        .
        //initializing components
          //component initialization
        .
        .
        .
    }
}

哪种初始化方式更好?

我只看到有大量组件要初始化的示例类使用私有方法,所以看起来它是为了可读性。我对吗?如果是这样,不使用评论也会提供类似的可读性水平吗?

4 个答案:

答案 0 :(得分:2)

  

所以它似乎是为了可读性。我是对的吗?

是的,对于可读性以及在方法中保持所有组件初始化更好,类似的方法与.Net框架中的WinForm一起使用。如果只使用注释,那么想象你的构造函数只是为了组件初始化而转到200行代码。

  

如果是这样,不会使用评论也提供类似的级别   可读性?

组件初始化不仅仅是对组件类的构造函数调用,通常它涉及设置其他属性,如高度,宽度,位置等。现在想象如果使用注释和空格,那么构造函数将是数百行代码,只是因为组件初始化。

答案 1 :(得分:1)

我认为他们这样做是为了提高可读性。将GUI组件的初始化与构造函数分离使得构造函数代码更清晰,更简洁(否则您将拥有巨大的构造函数方法)。因此,您确切地知道哪些代码块与GUI相关,哪些与该类的内部函数相关。

答案 2 :(得分:1)

当然第一个更好。这一切都是为了提高可读性和维护性。

第二种方法并不好,因为在大多数情况下,评论实际上是不好的和不可靠的。如果更改某些逻辑,则通常不会更新注释。如果代码本身很好,包括具有自解释名称的方法,那么它总是更好。提取与单个责任逻辑相关的一些代码作为抽象步骤(您不需要详细了解)

答案 3 :(得分:1)

如果您需要初始化许多字段,那么它们也有不同的类型。然后只有更好地放入函数并从constrctor调用它,如 -

public MyClass{
    public MyClass(){
         initializeComponentType1();
         initializeComponentType2();
         ...
    }
    /**
    * initializing type 1 component
    */
    private void initializeComponentType1(){
        //initializing
    }
    /**
    * initializing type 2 component
    */
    private void initializeComponentType2(){
        //initializing
    }
}

它提高了代码的可读性和可维护性。始终建议编写简单,可读和可维护的代码。

但如果有一些启动,你就不需要创建功能。