Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在私有方法或外部设置成员变量?_Java_Coding Style_Swt - Fatal编程技术网

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对此表示抱歉。做出改变