Использовать некоторые 'if - else' или 'переключатель' в методе

Я создал метод в Java, который позволял бы "checkear" некоторые мне JTextFields , идея состоит в том, чтобы пользователь ввел Ваши личные данные (имя, фамилия, электронная почта, password и т.д.)

и что этот метод позволил мне checkear если JTextfields они не NULL , формат Электронной почты - правильный и в конце концов, что password не был NULL.

public boolean checkRegistrationData(ArrayList<JTextField> jTxts, JPasswordField pass, JTextField theEmail) {

    if (isJtextNotNull(jTxts) && isJPasswordNotNull(pass) && isValidEmailAddress(theEmail)) {
        JOptionPane.showMessageDialog(null, "A confirmation Code has been sent to your Email adress");
        return true;

    } else if (isJtextNotNull(jTxts) && !isJPasswordNotNull(pass) && isValidEmailAddress(theEmail)) {
        JOptionPane.showMessageDialog(null, "The password field is empty");
        return false;

    } else if (isJtextNotNull(jTxts) && isJPasswordNotNull(pass) && !isValidEmailAddress(theEmail)) {
        JOptionPane.showMessageDialog(null, "The email address is not valid");
        return false;
    }

    else {

        JOptionPane.showMessageDialog(null, "Some data is empty");
        return false;
    }
}

ArrayList<JTextField> jTxts он, где "сохранялось" большинство JTextFields с данными пользователя.

Есть какой-то способ улучшать этот метод? было бы лучше использовать переключатель?

2
задан 17.09.2016, 15:11
3 ответа

Общий главный файл (Guard clause/Early exit) состоит в подтверждении в начале метода, что аргументы действительные, выходя из метода, если это не так. Таким образом, отделяется истинная цель метода, предварительных проверок. С этим главным файлом, метод остался бы, как останься:

public boolean checkRegistrationData(ArrayList<JTextField> jTxts, JPasswordField pass, JTextField theEmail) {

    if (!isJtextNotNull(jTxts)) {
        JOptionPane.showMessageDialog(null, "Some data is empty");
        return false;
    }

    if (!isJPasswordNotNull(pass)) {
        JOptionPane.showMessageDialog(null, "The password field is empty");
        return false;
    }

    if (!isValidEmailAddress(theEmail)) {
        JOptionPane.showMessageDialog(null, "The email address is not valid");
        return false;
    }

    JOptionPane.showMessageDialog(null, "A confirmation Code has been sent to your Email adress");
    return true;
}
3
ответ дан 24.11.2019, 13:22

Чтобы избегать показывать сообщение из-за каждого типа ошибки, что podrГ, - чтобы быть обременительным для пользователя, ты можешь группировать все ошибки с помощью списка. Это:

✍ CГіdigo

public boolean checkRegistrationData(ArrayList<JTextField> jTxts, JPasswordField pass, JTextField theEmail) {
    List<String> errors = new ArrayList<>();
    if (!isJtextNotNull(jTxts)) {
        errors.add("Some data is empty");
    }
    if (!isJPasswordNotNull(pass)) {
        errors.add("The password field is empty");
    }
    if (!isValidEmailAddress(theEmail)) {
        errors.add("The email address is not valid");
    }
    if (errors.isEmpty()) {
        JOptionPane.showMessageDialog(null, "A confirmation Code has been sent to your Email adress");
    } else {
        JOptionPane.showMessageDialog(null, String.join("\n", errors));
    }
    return errors.isEmpty();
}

✍ Вывод

captura

Таким образом, ты показываешь все ошибки, которые существуют в принятых в доме данных, и у пользователя есть возможность исправить все одновременно.

4
ответ дан 24.11.2019, 13:22

switch он ты был бы полезным, чтобы оценивать различные результаты того же выражения. Всегда работоспособнее переключатель, чем связывание if, elseif... else. Но в твоем случае ты оцениваешь 4 отличных выражения:

  1. isJtextNotNull (jTxts) && isJPasswordNotNull (pass) && isValidEmailAddress (theEmail)
  2. isJtextNotNull (jTxts) &&! isJPasswordNotNull (pass) && isValidEmailAddress (theEmail)
  3. isJtextNotNull (jTxts) && isJPasswordNotNull (pass) &&! isValidEmailAddress (theEmail)
  4. Если никакое выражение не является истинным

Он мне не кажется много почувствованным о том, что использую переключатель в этом случае кроме того, что ты используешь дополнительную переменную, например estado_del_formulario, и что Ваша стоимость соответствовала каждому из возможных состояний формуляра.

1
ответ дан 24.11.2019, 13:22