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