Java - 检查没有if语句的空String

Tho*_*rds 3 java string performance if-statement

我有一个简单的JFrame,有三个文本框:名字,姓氏和电子邮件地址.按下添加按钮后,详细信息将添加到阵列列表中.目前我有一组if语句来检查用户是否在文本框中输入了一些内容,如下所示:

private void addPersonButtonActionPerformed(java.awt.event.ActionEvent evt) {
    String firstName = firstNameTextField.getText();
    String lastName = lastNameTextField.getText();
    String emailAddress = emailTextField.getText();

    if (firstName.equals("")) {
        System.out.println("First Name is missing");
    } else if (lastName.equals("")) {
        System.out.println("Last Name is missing");
    } else if (emailAddress.equals("")) {
        System.out.println("E-Mail address is missing");
    } else if (!Email.isValid(emailAddress)) {
        System.out.println("E-Mail address is invalid");
    } else {
        personArrayList.add(new Person(firstName, lastName, emailAddress));
        System.out.println("Person added!");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现if语句的长块会使代码难以阅读; 它也不会提醒用户多个文本字段为空.有更有效的方法吗?

提前致谢!

Dav*_*ton 7

更高效?没有.

更具可读性?是的 - 不同种类的效率.

isValid()为每个字段或字段类型创建类似方法的内容.这些将包含简单的验证,如空白检查,正则表达式等,偶尔也包含其他特定于域的逻辑.

有很多方法可以分解和/或抽象这个功能,大致相当于:

private void addPersonButtonActionPerformed(java.awt.event.ActionEvent evt) {
    String firstName = firstNameTextField.getText();
    String lastName = lastNameTextField.getText();
    String emailAddress = emailTextField.getText();

    if (   isNameValid(firstName, "First name")
        && isNameValid(lastName, "Last name")
        && isEmailValid(emailAddress, "Email address")) {
        personArrayList.add(new Person(firstName, lastName, emailAddress));
        System.out.println("Person added!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是保持主线代码干净简洁,符合您的个人风格,您正在使用的库等.除了自己编辑之外,还有现有的库来包装它.

如果您有许多这样的"表单",抽象表单本身及其验证可能是有意义的; 如果它只是那个,那么可能没有令人信服的理由进一步采取类似于上述的东西.