Logic 多个布尔检查或一个无效计数器

Logic 多个布尔检查或一个无效计数器,logic,design-patterns,Logic,Design Patterns,根据多个变量的无效性,您首选的实施措施是什么: 即: 或: 我猜对0进行int检查更快,而且毫无疑问是正确的模式,当然对于大量属性而言 我想说,你使用什么方法取决于具体情况。如果你只是想说某个属性出错,那么即使是一个简单的布尔值也足够了,如果你想说某个属性出错,并指出第一个出错的属性是另一种情况,而指出每个出错的属性又是另一种情况。因此,这取决于需求。这将是一个更好的适合。这不是实际的代码。这是一种广泛存在的模式,当属性返回到不再无效的状态时,需要停止验证,因此可能不再需要验证,但需要检查是否有

根据多个变量的无效性,您首选的实施措施是什么:

即:

或:


我猜对0进行int检查更快,而且毫无疑问是正确的模式,当然对于大量属性而言

我想说,你使用什么方法取决于具体情况。如果你只是想说某个属性出错,那么即使是一个简单的布尔值也足够了,如果你想说某个属性出错,并指出第一个出错的属性是另一种情况,而指出每个出错的属性又是另一种情况。因此,这取决于需求。这将是一个更好的适合。这不是实际的代码。这是一种广泛存在的模式,当属性返回到不再无效的状态时,需要停止验证,因此可能不再需要验证,但需要检查是否有其他仍然无效的属性。
invalid_get() {
    return a_invalid || b_invalid || c_invalid;
}

a_invalid_set(v) {
    a_invalid=v;
    if(v) {
        validate_add();
    } else {
        validate_remove();
    }
}
function validate_remove() {
    if(!invalid_get()) {
        validate_remove_do();
    }
}
var invalids_num:Int;
function a_invalid_set(v) {
    a_invalid=v;
    if(v) {
        ++invalids_num;
        validate_add();
    } else {
        --invalids_num;
        validate_remove();
    }
}

validate_remove() {
    if(invalids_num==0) {
        validate_remove_do();
    }
}