Java code style, immutable переменные

Есть пример кода:

//объявляем ссылку
SomeClass someClass;
//в зависимости от условий инициализируем ссылку тем или иным образом
if (condition1) {
  someClass = value1;
} else {
  someClass = value2;
}

Я столкнулся с мнением, что это "грязный код", и вместо этого надо стараться объявлять иммутабельные переменные везде, где это возможно:

final SomeClass someClass = someValue;

Чем плох первый пример и какие аргументы в пользу второго?


Ответы (1 шт):

Автор решения: Vadik

Просто добавьте модификатор final в вашем примере:

final SomeClass someClass;
if (condition) {
  someClass = value1;
} else {
  someClass = value2;
}

Так сложнее в коде допустить ошибку и присвоить переменной что-нибудь не то. Считаю, что писать final — это хорошо.

В простых случаях, как уже подсказал @NowhereMan, пользуйтесь тернарным оператором:

final SomeClass someClass = condition ? value1 : value2;

Если кода много, то, как предлагает @insolor, можно объявить новый метод:

final SomeClass someClass = getSomeClass();
private SomeClass getSomeClass() {
    if (condition) {
        return value1;
    } else {
        return value2;
    }
}
→ Ссылка