所以,举个例子,假设我们有一个abstract class
被调用的Question
,该问题包含很多字符串,一个用于问题本身,一个用于答案,两个响应发布给用户,如果他的问题是对的/错的。
public abstract class Question {
private final String question;
private final String answer;
private final String answerCorrect;
private final String answerWrong;
}
我的问题基本上是,初始化所有字符串的常用方法是什么?到目前为止,我已经编写了 2 个关于如何做到这一点的版本,它们各有优缺点,我想知道是否有某种“最佳编码实践”。
版本 A
初始化构造函数中的所有内容。
public abstract class Question {
//...
public Question(String question, String answer, String answerCorrect, String answerWrong) {
this.question = question;
this.answer = answer;
this.answerCorrect = answerCorrect;
this.answerWrong = answerWrong;
}
}
这看起来很方便,我唯一遇到的问题是用户不确定字符串的顺序。
public class ExampleClass extends Question {
public ExampleClass() {
super("I think, that's the answer", "and that's the question", "answer wrong?", "answer right?");
}
}
版本 B
不要立即初始化并等待用户执行。
public abstract class Question {
//...
public Question() {
this.question = "";
this.answer = "";
this.answerCorrect = "";
this.answerWrong = "";
}
public void setQuestion(String question) {
this.question = question;
}
//...
}
这使得初始化变量变得更容易,但字符串不能再存在final
了,并且不能保证用户会初始化所有变量。
我也想过让子类实现在构造函数中调用的抽象方法Question
来初始化所有字符串并保留它们final
,但那个版本对我来说似乎有点太奇怪了。
还有其他/更好的方法吗?我应该更喜欢哪个版本?
预先感谢您的支持。