Java 在私有方法或外部设置成员变量?
我有一个基本的编码练习问题。这是一个很好的实践Java 在私有方法或外部设置成员变量?,java,coding-style,swt,Java,Coding Style,Swt,我有一个基本的编码练习问题。这是一个很好的实践 private Text myTextControl; public void createControl() { createTextControl(parent,2,2); } private void createTextControl(Composite parent, int horizontalSpan, int verticalSpan) { myTextControl = new Text(parent,SWT.SI
private Text myTextControl;
public void createControl()
{
createTextControl(parent,2,2);
}
private void createTextControl(Composite parent, int horizontalSpan, int verticalSpan)
{
myTextControl = new Text(parent,SWT.SINGLE);
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, horizontalSpan,
verticalSpan);
myTextControl.setLayoutData(layoutData);
}
或
public void createControl()
{
myTextControl = createTextControl(parent,2,2);
}
private Text createTextControl(Composite parent, int horizontalSpan, int verticalSpan)
{
Text text = new Text(parent,SWT.SINGLE);
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, horizontalSpan,
verticalSpan);
text.setLayoutData(layoutData);
return text;
}
我不知道是否有一个比另一个好。因此,我只想确保如果继续使用返回文本对象的相同函数createTextControl,那么应该使用第二条代码语句,因为返回它而不使用它将是一种浪费。另外,第二个允许更多的代码可重用性。在我看来,在这种情况下,您的第二个代码更好,因为必须使用
createControl
类来创建所有类型的控件,并且在该类中,您必须调用其他方法来创建特定的控件,如您的第一选择textControl,仅凭这一点,它更容易阅读和理解。老实说,如果没有看到从中提取的整个类,我不认为这是可以解释的。通常情况下,效果都在函数结果中的“自包含”方法略为可取,而不是修改方法外部定义的字段。但在这里,我认为这取决于myTextControl
在其他同学中的使用方式。任何一个都可以看得更清楚。现在呢?我在第一种情况下采用了无效的方法,请不要在问题发布后对其进行实质性更改。@EricJ。抱歉,我刚刚将createTextControl的返回类型设置为void。这不会影响你anything@Vwin嗯,在您编辑之后,我认为第二个变体更好,因为第一个变体不再编译。@ajb对此表示抱歉。做出改变