1

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

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

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

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

哪种初始化方式更好?

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

4

4 回答 4

2

所以看起来它是为了可读性。我对吗?

是的,它更好的可读性以及将所有组件初始化保持在一个方法中,类似的方法与 .Net 框架中的 WinForm 一起使用。如果只使用注释,那么想象一下您的构造函数仅用于组件初始化就需要 200 行代码。

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

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

于 2013-05-17T05:01:57.257 回答
1

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

于 2013-05-17T04:58:33.237 回答
1

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

第二种方法不好,因为在大多数情况下,评论实际上很糟糕且不可靠。如果更改了某些逻辑,则通常不会更新注释。虽然如果代码本身很好,包括具有自我解释名称的方法,它总是更好。提取一些逻辑上与单一职责相关的代码作为抽象步骤(您无需深入了解即可理解)

于 2013-05-17T04:59:33.400 回答
1

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

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

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

但是如果有一些初始化,你不需要创建函数。

于 2013-05-17T05:01:03.703 回答