Всегда используйте скобки для if/else

Это часть небольшой серии статей о хороших привычках Java-программистов.

Да, это правда, вам не нужны фигурные скобки, чтобы ввести область видимости для такого элемента Java, как

        if (isValid)
            System.out.println("The input is valid.");
Войти в полноэкранный режим Выход из полноэкранного режима

или даже для

        if (isValid)
            System.out.println("The input is valid.");
        else
            System.out.println("The input is not valid.");
Ввести полноэкранный режим Выход из полноэкранного режима

Но это опасно и вносит несоответствия в стиль.

Опасность

Опасность связана с тем, что слишком легко добавить вторую вещь, которую нужно сделать, когда выполняются условия if или else, и не понять, что теперь нужно добавить фигурные скобки, чтобы убедиться, что обе вещи выполняются, когда выполняется условие. Рассмотрим

        if (isValid)
            System.out.println("The input is valid.");
            System.out.println("It sure is."); // This will always execute, even if isValid is false.
Войти в полноэкранный режим Выйти из полноэкранного режима

Упс. Эта вторая строка будет выполняться всегда, независимо от того, имеет ли isValid значение true или false. Вероятно, автор хотел добавить фигурные скобки:

        if (isValid) {
            System.out.println("The input is valid.");
            System.out.println("It sure is."); // This will only execute if isValid is true.
        }
Войти в полноэкранный режим Выйти из полноэкранного режима

Аналогично для

        if (isValid)
            System.out.println("The input is valid.");
        else
            System.out.println("The input is not valid.");
            System.out.println("It sure isn't."); // This will always execute, even if isValid is true. 
Войти в полноэкранный режим Выход из полноэкранного режима

Автор, вероятно, хотел добавить фигурные скобки:

        if (isValid) {
            System.out.println("The input is valid.");
        } else {
            System.out.println("The input is not valid.");
            System.out.println("It sure isn't."); // This will only execute if isValid is false.
        }
Ввести полноэкранный режим Выйти из полноэкранного режима

Согласованность стилей

Способность легко читать программы во многом обусловлена тем, что авторы соблюдают соглашения и последовательны в своем стиле кодирования.

Например, если файл отформатирован непоследовательно, везде разные отступы, его трудно воспринимать. Вы бы не захотели это читать:

// Don't do this!
        if (isValid) {
     System.out.println("The input is valid");
        } else {
            System.out.println("The input is not valid");
                System.out.println("It sure isn't"); 
        }
Войти в полноэкранный режим Выйти из полноэкранного режима

Иногда добавление фигурных скобок для утверждений if, а иногда нет, вносит несогласованность. Постоянное использование фигурных скобок вносит согласованность, а согласованность повышает читабельность и удобство сопровождения. Чем меньше работы нам приходится делать при понимании программы, тем лучше.

Оцените статью
devanswers.ru
Добавить комментарий