为什么Swing Tutorials中的一些示例类(抱歉,我不记得哪些;我可能错了,但我知道我在某处看到了这个)使用这样的私有方法?:
public MyClass{
public MyClass(){
.
.
.
initializeComponents();
.
.
.
}
private void initializeComponents(){
//initializing
}
}
这是正确的约定,还是这个?:
public MyClass{
public MyClass(){
.
.
.
//initializing components
//component initialization
.
.
.
}
}
哪种初始化方式更好?
我只看到有大量组件要初始化的示例类使用私有方法,所以看起来它是为了可读性。我对吗?如果是这样,不使用评论也会提供类似的可读性水平吗?
答案 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
}
}
它提高了代码的可读性和可维护性。始终建议编写简单,可读和可维护的代码。
但如果有一些启动,你就不需要创建功能。