(Я искал «else if range», но не придумал никаких сообщений, которые отвечали на мой вопрос).Не вредно ли явно указывать диапазоны в операторах if-then-else?
При использовании если .. ElseIf .. еще, чтобы выбрать, что делать, основываясь на переменном в определенных (взаимоисключающими) находится в диапазоне, я хотел бы указать диапазоны явно:
int num = 55;
String message;
if (num >= 20) {
// update message variable
message = "Bigger or equal to than 20";
}
else if (10 <= num && num < 20) {
// update message variable
}
else if (0 <= num && num < 10) {
// update message variable
}
else if (num < 0) {
// update message variable
}
System.out.println(message);
Но все учебники и конспекты я вижу написать такой пример, как это:
int num = 55;
String message;
if (num >= 20) {
// update message variable
message = "Bigger or equal to than 20";
}
else if (num >= 10) {
// update message variable
}
else if (num >= 0) {
// update message variable
}
else {
// update message variable
}
System.out.println(message);
Я понимаю, почему они удостоверяются, чтобы использовать еще в конце (то есть, чтобы предотвратить Java компилятор думать, что переменная, как сообщение может не инициализируются, если эта переменная была примитивной), но учитывая, что все учебники и лекции показывают другой стиль, есть ли проблемы, вызванные явным написанием диапазонов для всех других условий, как мне нравится?
Я не согласен с рефакторинга части: Первая версия также очень склонны к рефакторинга ошибок, потому что вы должны убедиться, что верхний предел каждого диапазона именно нижний предел следующего. –
Я думаю, что беспокойство, поднятое в [ответе Энди Томаса] (http://stackoverflow.com/a/40183548/5221149), является более реальной проблемой, чем кто-то, перестраивающий последовательность утверждений if-elseif-elseif. Все, что достаточно глупо, чтобы перестроить такую конструкцию, не понимая, что 'else' зависит от' if', нужно уволить. – Andreas