c++ - 简化陈述

扫码查看

我想简化此if语句,使其更具“可读性”

void NewFan::checkData()
{
    if(!ui->firstNameEdit->text().isEmpty() && !ui->lastNameEdit->text().isEmpty() &&
            (!ui->peselEdit->text().isEmpty() && (ui->birthDateEdit->text().size()==10 &&
             !ui->townEdit->text().isEmpty() && !ui->addressEdit->text().isEmpty()) ||
             ui->peselEdit->text().size()==11))
        ui->addButton->setEnabled(true);
    else
        ui->addButton->setDisabled(true);
}

除了将其重写为嵌套的if语句,还有其他方法吗?

最佳答案

将其分为几个部分:

void NewFan::checkData()
{
    bool valid = true;
    if(ui->firstNameEdit->text().isEmpty())
        valid=false;
    if(ui->lastNameEdit->text().isEmpty())
        valid=false;
    if(!ui->peselEdit->text().isEmpty())
        valid=false;
    if((ui->birthDateEdit->text().size()==10 &&
             !ui->townEdit->text().isEmpty() && !ui->addressEdit->text().isEmpty()) ||
             ui->peselEdit->text().size()==11)
        valid=false;

    ui->addButton->setEnabled(valid);
}

这还允许您在通过验证时生成错误消息。

09-11 19:24
查看更多