Java. Инициализация
Скажите, пожалуйста, в чем разница между вариантами кода? Какой вариант лучше применять? (вместо типа String может быть любой тип)
public class SomeClass {
String string = new String("Some text");
public SomeClass() {}
}
public class AnotherClass {
String string;
public AnotherClass() {
string = new String("Some text");
}
}
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Я придерживаюсь правила - вся инициализация в одном месте. Если можно оставить конструктор пустым, то конструктор вообще не пишется:
public class ClassA {
private String s = "value";
...
}
Если у экземпляров класса есть переменная часть при конструировании, то всё делается в конструкторе:
public class ClassB {
private String s1;
private String s2;
public ClassB(String s2) {
s1 = "value";
this.s2 = s2;
}
...
}
Основание для правила - простота чтения кода: для представления о состоянии класса после инициализации не требуется смотреть в несколько разных мест. Порядок инициализации лучше соответствует порядку операторов в коде.