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;
    }
    ...
}

Основание для правила - простота чтения кода: для представления о состоянии класса после инициализации не требуется смотреть в несколько разных мест. Порядок инициализации лучше соответствует порядку операторов в коде.

→ Ссылка