Без надлежащего планирования и осторожности, если заявления могут стать запутанными. Но при усердии и некотором планировании мы можем создавать чистые операторы if, которые приятно читать.
Посмотрите на этот вложенный оператор if, это просто беспорядок.
public static void main(String[] args) { String name = "ted"; if(name != null){ if(name.length() < 5){ }else if(name.length() == 3){ if(name.equals("ted")){ System.out.println(name); }else{ System.out.println("not ted"); } } else{ //do something } }else{ //do something } }
Вложенные операторы if запутаны и трудны для чтения. Хорошей практикой является даже не использовать вложенные операторы if. Вместо этого, если вам нужен вложенный оператор if, поместите его внутри метода.
Вы можете поместить их все в методы, и вы получите следующее:
public static void main(String[] args) { String name = "ted"; if(name != null) { determineIfEqualsTed(name); } }
Просто взглянув на это, вы можете сказать, что он делает. Если строка не нулевая, выясните, равна ли строка Теду. А теперь посмотрите, что делает defineIfEqualsTed().
public static boolean determineIfEqualsTed(String name){ boolean isStringTed = false; if(name.length() <5){ isStringTed = isLessThan3AndTed(name); }else{ isStringTed = false; } return isStringTed; }
Сначала мы определяем, не меньше ли длина имени 5 по какой-либо причине. Если это меньше 5, мы видим метод isLessThan3AndEqualTed, поэтому строка меньше 3 и равна ted.
public static boolean isLessThan3AndEqualTed(String name){ boolean isLessThanThreeAndTed = false; if(name.length() < 3){ isLessThanThreeAndTed = isnameTed(name); }else{ isLessThanThreeAndTed = false; } return isLessThanThreeAndTed; }
Сначала мы определяем, меньше ли длина 3, затем у нас есть метод isNameTed(). Этот метод выглядит так, как будто он на самом деле видит, равняется ли он строке.
public static boolean isnameTed(String name){ boolean isnameTed = false; if(name.equals("ted")){ isnameTed = true; }else{ isnameTed = false } return isnameTed; }
мы сравниваем строку с «ted» и возвращаем true, если это так, и false, если нет. Ву! были сделаны.
Возможно, это выглядело немного затянуто, но когда человек смотрит на этот оператор if.
public static void main(String[] args) { String name = "ted"; if(name != null) { determineIfEqualsTed(name); } }
Они будут знать, что происходит, метод определяет, равна ли строка ted. Если они хотят глубже погрузиться в то, как это работает, они могут это сделать.
Сводка
Не делайте вложенных операторов if.
Поместите вложенные операторы if внутри методов, чтобы их было легче читать.
Ваше утверждение if должно занять не менее 10 секунд, чтобы понять, что он делает.