If else — одно из наиболее часто используемых ключевых слов, когда мы пишем код, но иногда слишком много if else может причинить вред нашему мозгу, например следующий псевдокод:
Это расстраивает? Хотя это псевдокод и выглядит преувеличенно, на самом деле, когда мы бесчисленное количество раз пересматриваем чужой код, мы находим похожие сценарии, поэтому в этой статье мы подробно обсудим, есть ли способ избежать этого? много, если еще?В нашей статье представлены 9 способов решения этих «раздражающих», если еще что-то, давайте посмотрим.
1. Используйте возврат
Мы используемreturn
Удалите лишнее else, и код реализации будет следующим.
Код до оптимизации:
if ("java".equals(str)) {
// 业务代码......
} else {
return;
}
Код после оптимизации:
if (!"java".equals(str)) {
return;
}
// 业务代码......
Так будет выглядеть гораздо удобнее.Хотя разница всего в одной строчке кода, разрыв между настоящим экспертом и обычным человеком отражен именно в этой строчке кода.
«Не делай хороших вещей, когда они маленькие, не делай вещей, потому что они злые»., говоря то же самое.
2. Используйте карту
Использование массива Map для определения соответствующей информации о суждении в качестве информации об элементе может напрямую избежать суждения, если еще.Код реализации выглядит следующим образом.
Код до оптимизации:
if (t == 1) {
type = "name";
} else if (t == 2) {
type = "id";
} else if (t == 3) {
type = "mobile";
}
Давайте сначала определим массив MAP и сохраним соответствующую информацию об оценке:
Map<Integer, String> typeMap = new HashMap<>();
typeMap.put(1, "name");
typeMap.put(2, "id");
typeMap.put(3, "mobile");
Предыдущий оператор суждения можно заменить следующей строкой кода:
type = typeMap.get(t);
3. Используйте тернарный оператор
Тернарные операторы также называются тернарными выражениями или тернарными операторами/выражениями, но все они означают одно и то же.Оптимизированный код выглядит следующим образом.
Код до оптимизации:
Integer score = 81;
if (score > 80) {
score = 100;
} else {
score = 60;
}
Код после оптимизации:
score = score > 80 ? 100 : 60;
4. Комбинируйте условные выражения
Некоторые логические суждения в проекте можно преобразовать в более простые и понятные коды логических суждений посредством сортировки и индукции, как показано ниже.
Код до оптимизации:
String city = "西安";
String area = "029";
String province = "陕西";
if ("西安".equals(city)) {
return "xi'an";
}
if ("029".equals(area)) {
return "xi'an";
}
if ("陕西".equals(province)){
return "xi'an";
}
Код после оптимизации:
if ("西安".equals(city) || "029".equals(area) || "陕西".equals(province)){
return "xi'an";
}
5. Используйте перечисления
JDK 1.5 представил новый тип — перечисление (enum), мы можем использовать его для выполнения многих функций, таких как следующие.
Код до оптимизации:
Integer typeId = 0;
String type = "Name";
if ("Name".equals(type)) {
typeId = 1;
} else if ("Age".equals(type)) {
typeId = 2;
} else if ("Address".equals(type)) {
typeId = 3;
}
При оптимизации мы сначала определяем перечисление:
public enum TypeEnum {
Name(1), Age(2), Address(3);
public Integer typeId;
TypeEnum(Integer typeId) {
this.typeId = typeId;
}
}
Предыдущее суждение if else можно заменить следующей строкой кода:
typeId = TypeEnum.valueOf("Name").typeId;
6. Используйте опционально
Класс Optional был представлен начиная с JDK 1.8, а в JDK 9 класс Optional был улучшен за счет добавления метода ifPresentOrElse(), который мы можем использовать, чтобы исключить оценку if else следующим образом.
Код до оптимизации:
String str = "java";
if (str == null) {
System.out.println("Null");
} else {
System.out.println(str);
}
Код после оптимизации:
Optional<String> opt = Optional.of("java");
opt.ifPresentOrElse(v ->
System.out.println(v), () -> System.out.println("Null"));
Советы: Обратите внимание на работающую версию, это должен быть JDK 9+.
7. Разберите и оптимизируйте логику суждений
Как и в пункте 4, мы можем написать более понятный код, проанализировав семантику логического суждения if else, например оптимизацию следующего вложенного суждения.
Код до оптимизации:
// 年龄大于 18
if (age > 18) {
// 工资大于 5000
if (salary > 5000) {
// 是否漂亮
if (pretty == true) {
return true;
}
}
}
return false;
Код после оптимизации:
if (age < 18) {
return false;
}
if (salary < 5000) {
return false;
}
return pretty;
Нужно попробовать изменить отношение включения в выражении на отношение параллельное, чтобы код был читабельнее и логика была понятнее.
8. Используйте полиморфизм
Наследование, инкапсуляция и полиморфизм являются важными идеями ООП (объектно-ориентированного программирования).В этой статье мы используем идею полиморфизма, чтобы предоставить метод для удаления, если еще.
Код до оптимизации:
Integer typeId = 0;
String type = "Name";
if ("Name".equals(type)) {
typeId = 1;
} else if ("Age".equals(type)) {
typeId = 2;
} else if ("Address".equals(type)) {
typeId = 3;
}
Используя полиморфизм, мы сначала определяем интерфейс и объявляем публичный возврат в интерфейсе.typeId
метод, добавьте три подкласса для реализации этих трех подклассов соответственно, и код реализации выглядит следующим образом:
public interface IType {
public Integer getType();
}
public class Name implements IType {
@Override
public Integer getType() {
return 1;
}
}
public class Age implements IType {
@Override
public Integer getType() {
return 2;
}
}
public class Address implements IType {
@Override
public Integer getType() {
return 3;
}
}
Примечание: для простоты мы поместили класс и интерфейс в блок кода.В реальной разработке интерфейс и три класса должны создаваться и храниться отдельно.
На этом этапе наше предыдущее суждение if else может быть изменено на следующий код:
IType itype = (IType) Class.forName("com.example." + type).newInstance();
Integer typeId = itype.getType();
Кто-то может сказать, что это усложняет код, что является типичным примером «убийства курицы мясницким ножом». Здесь автор предоставляет только идею реализации и некоторый упрощенный код для разработчиков, чтобы иметь дополнительную идею и выбор в реальной разработке Конкретное использование должно быть определено в соответствии с реальной ситуацией.Гибкость и умозаключения — лучший способ развития.
9. Выборочное использование переключателя
Многие люди не понимают сценариев использования switch и if else, но когда можно использовать оба, switch можно использовать как можно чаще, потому что switch имеет более высокую производительность, чем if else при выборе постоянных ветвей.
если еще код решения:
if ("add".equals(cmd)) {
result = n1 + n2;
} else if ("subtract".equals(cmd)) {
result = n1 - n2;
} else if ("multiply".equals(cmd)) {
result = n1 * n2;
} else if ("divide".equals(cmd)) {
result = n1 / n2;
} else if ("modulo".equals(cmd)) {
result = n1 % n2;
}
код переключения:
switch (cmd) {
case "add":
result = n1 + n2;
break;
case "subtract":
result = n1 - n2;
break;
case "multiply":
result = n1 * n2;
break;
case "divide":
result = n1 / n2;
break;
case "modulo":
result = n1 % n2;
break;
}
В Java 14 вы можете использовать блок кода переключения, а код реализации выглядит следующим образом:
// java 14
switch (cmd) {
case "add" -> {
result = n1 + n2;
}
case "subtract" -> {
result = n1 - n2;
}
case "multiply" -> {
result = n1 * n2;
}
case "divide" -> {
result = n1 / n2;
}
case "modulo" -> {
result = n1 % n2;
}
}
Суммировать
Индустрия хороша в усердии и праздности, а действие достигается размышлением и губится следованием. Программирование — это ремесло и удовольствие, согласно самому популярному курсу счастья Гарварда «Метод счастья».Единственный способ заставить нас чувствовать себя счастливыми и счастливыми — это посвятить себя работе, которую мы можем выполнить, приложив немного усилий.! «Да, слишком простые вещи обычно не вызывают у нас интереса, а слишком тяжелая работа может лишить нас уверенности в себе. Только то, что кажется трудным, но может быть выполнено с небольшим усилием, принесет нам огромную радость.
последние слова
Оригинальность – это непросто, если вы считаете, что эта статья вам полезна, нажмите на значок "отличный", это самая большая поддержка и уважение к автору, спасибо.
Ссылки и благодарности
woohoo.blog java.net/скачать этот журнал/Arch…
Для получения более интересного контента, пожалуйста, обратите внимание на публичный аккаунт WeChat «Java Chinese Community».